webwork提交表单时的webwork Could not create and/or set value back on to object异常

来源:互联网 发布:php addslashes() 编辑:程序博客网 时间:2024/04/30 19:36

刚开始使用webwork的时候忽略了一个问题,在Action中没有对提交的表单对象进行实例化。例如提交一个叫UserForm的表单,它所对应的类为UserInfo表单时,在UserInfoAction中没有对UserInfo进行实例化操作就会报出如下异常:

[mywap] ERROR [tcpConnection-8080-0] InstantiatingNullHandler.nullPropertyValue(86) | Could not create and/or set value back on to object
java.lang.NullPointerException
        at ognl.OgnlRuntime$ClassCache.get(OgnlRuntime.java:144)
        at ognl.OgnlRuntime.getDeclaredMethods(OgnlRuntime.java:1188)
        at ognl.OgnlRuntime.getSetMethod(OgnlRuntime.java:1270)
        at ognl.OgnlRuntime.hasSetMethod(OgnlRuntime.java:1291)
        at ognl.OgnlRuntime.hasSetProperty(OgnlRuntime.java:1307)
        at com.opensymphony.xwork.util.OgnlUtil.getRealTarget(OgnlUtil.java:156)
        at com.opensymphony.xwork.util.InstantiatingNullHandler.nullPropertyValue(InstantiatingNullHandler.java:68)
        at ognl.ASTProperty.getValueBody(ASTProperty.java:98)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:171)
        at ognl.SimpleNode.getValue(SimpleNode.java:193)
        at ognl.ASTChain.setValueBody(ASTChain.java:168)
        at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:180)
        at ognl.SimpleNode.setValue(SimpleNode.java:230)
        at ognl.Ognl.setValue(Ognl.java:476)
        at com.opensymphony.xwork.util.OgnlUtil.setValue(OgnlUtil.java:189)
        at com.opensymphony.xwork.util.OgnlValueStack.setValue(OgnlValueStack.java:115)
        at com.opensymphony.xwork.util.OgnlValueStack.setValue(OgnlValueStack.java:99)
        at com.opensymphony.xwork.interceptor.ParametersInterceptor.before(ParametersInterceptor.java:71)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
        at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
        at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at com.caucho.server.http.FilterChainFilter.doFilter(FilterChainFilter.java:88)
        at com.caucho.server.http.Invocation.service(Invocation.java:315)
        at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
        at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
        at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164)
        at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
        at java.lang.Thread.run(Thread.java:595)
[mywap] ERROR [tcpConnection-8080-0] ServletDispatcher.serviceAction(281) | Could not execute action
java.lang.NullPointerException
        at com.mywap.webwork.action.ColumninfoAction.save(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:300)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:166)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
        at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
        at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at com.caucho.server.http.FilterChainFilter.doFilter(FilterChainFilter.java:88)
        at com.caucho.server.http.Invocation.service(Invocation.java:315)
        at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
        at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
        at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164)
        at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
        at java.lang.Thread.run(Thread.java:595)

这种异常就是由于上述问题引起的,其实反过来想也很简单。怎么可能对一个为null的对象进行set和get操作呢,没有什么意义嘛。
因此我们需要在Action中new一个对象出来即:
UserInfo userInfo = new UserInfo();
这样在用userInfo进行set和get操作就有意义了

我们要做有意义的事情!!!!