input 为disabled 引起的java.lang.NullPointerException
2013-10-31 10:47
405 查看
最近遇到一个空指针异常:
严重: Servlet.service() for servlet [default] in context with path [/**] threw exception [java.lang.reflect.InvocationTargetException] with root cause
java.lang.NullPointerException
表现很奇怪:页面上查看源码,某个bean的myNo属性明明有值,但是到了action中,调试的结果显示,该属性为NULL, 结果是在该属性调用 myNo.getLength() 方法时,抛出空指针异常。
调查了很久,最后才发现是一个js函数出现了异常,导致后面提交的js代码中Form.enable("myForm") 没有执行,而myFrom中有一个Input为disabled:
由于Form.enable("myForm") 没有执行,所以提交时该input为disabled状态,而disabled状态导致action中对应该bean的myNo属性为Null,所以空指针异常。
所以最后不要使用input 的 disabled 属性,而用readonly代替。二者都是不可编辑,区别仅仅是是否接受焦点和可用Tab导航到。当然还有disabled可能不是successful的。而readonly可能是successful的。
所以readonly比disabled更加健壮。因为一般我们使用readonly和disabled的目的是,该属性不可编辑。而不是该属性值不提交。
严重: Servlet.service() for servlet [default] in context with path [/**] threw exception [java.lang.reflect.InvocationTargetException] with root cause
java.lang.NullPointerException
表现很奇怪:页面上查看源码,某个bean的myNo属性明明有值,但是到了action中,调试的结果显示,该属性为NULL, 结果是在该属性调用 myNo.getLength() 方法时,抛出空指针异常。
调查了很久,最后才发现是一个js函数出现了异常,导致后面提交的js代码中Form.enable("myForm") 没有执行,而myFrom中有一个Input为disabled:
<input name="bean.myNo" maxlength="15" value="zhxxxxng" disabled="disabled" />
由于Form.enable("myForm") 没有执行,所以提交时该input为disabled状态,而disabled状态导致action中对应该bean的myNo属性为Null,所以空指针异常。
所以最后不要使用input 的 disabled 属性,而用readonly代替。二者都是不可编辑,区别仅仅是是否接受焦点和可用Tab导航到。当然还有disabled可能不是successful的。而readonly可能是successful的。
所以readonly比disabled更加健壮。因为一般我们使用readonly和disabled的目的是,该属性不可编辑。而不是该属性值不提交。
相关文章推荐
- Exception starting filter struts2 引起java.lang.NullPointerException
- 并发引起的java.lang.NullPointerException
- WeakReference引起的java.lang.NullPointerException
- Exception starting filter struts2 java.lang.NullPointerException 解决方法!!!!
- Type Unknown error: java.lang.NullPointerException
- Error:java.lang.NullPointerException (no error message)
- 使用Spring创建对象时出现的java.lang.NullPointerException
- 框架整合 在action中调用去出现java.lang.NullPointerException错误
- java.lang.NullPointerException&com.cb.action.LoginAction.execute(LoginAction.java:48)
- java.lang.NullPointerException at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked()
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)
- java.lang.NullPointerException: Expected timestamp in the Flume event headers, but it was null
- An internal error occurred during: “Updating Maven Project”. java.lang.NullPointerException
- Android程序报错:java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.
- android JPushInterface.setAlias 报错 java.lang.NullPointerException: Attempt to invoke virtual method
- weblogic部署程序爆错!java.lang.NullPointerException
- java.lang.NullPointerException-net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:749)
- org.apache.jasper.JasperException: java.lang.NullPointerException
- Android又现空指针(java.lang.NullPointerException)
- java.lang.NullPointerException:null 没有打印出任何堆栈信息的解决办法