关于NullPointerException的问题

peterxin 发布于 2013/05/23 02:23
阅读 539
收藏 0

@JFinal 你好,想跟你请教个问题:

代码

----------------------

@Before(BizStatusValidator.class)
public void update() {
System.out.println("para is "+ getPara());
BizStatus.dao.findById(getParaToInt()).update();
redirect("bizstatus");
}



报错信息

--------------------------

[ERROR]-[Thread: qtp19331111-20]-[com.jfinal.core.ActionHandler.handle()]: /bizstatus/update
java.lang.NullPointerException
at com.mc.backserver.web.BizStatusController.update(BizStatusController.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55)
at com.jfinal.validate.Validator.intercept(Validator.java:60)
at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:77)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Unknown Source)


---------------------


加载中
0
逝水fox
逝水fox
请问 你不检查findById是否找到对象就update了?这么明显的异常都看不懂的话,建议从Java基础补起吧
0
p
peterxin

@JFinal 你好,

测试的次序如下:

edit-》update

上面的update方法中,换用 getModel()方法依然存在问题:

getModel(BizStatus.class).update();

打印 getModel()的结果为:

com.mc.backserver.web.BizStatus@0 {}

 

但同样的代码,其他模块可以update成功。检查数据库表也没发现问题,请教@JFinal兄是何问题?


 

 

0
p
peterxin

找到问题了。通过getModel()才行,而且发现页面为bizstatus,需要在getModel(BizStatus.class,"bizstatus").update,如果直接调用getModel(BizStatus.classs).update是没响应的。

0
JFinal
JFinal

引用来自“peterxin”的答案

找到问题了。通过getModel()才行,而且发现页面为bizstatus,需要在getModel(BizStatus.class,"bizstatus").update,如果直接调用getModel(BizStatus.classs).update是没响应的。

注意大小写就可以了,如果用这个: getModel(BizStatus.classs),那么前端表单的name则需要为:bizStatus.xxx,注意表单中有modelName只是Model类名的首字母的变小写,中间的大写字母要保持住
0
JFinal
JFinal
可能是这句返回的是 null: BizStatus.dao.findById(getParaToInt())   然后调用 null 的 update()方法就出错了
p
peterxin
@jFinal 兄,是这样的么?
p
peterxin
如同demo里面的过程一样,先edit后update。在edit时候通过url传para过来;在update 方法时,只能在Model中传参数。不知道是否为@jfinal兄的设计初衷?
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部