在Jfinal中使用多线程 在run() 中调用 getModel 报空指针


image.pngimage.png

评论区

JFinal

2018-03-31 12:42

getModel 是使用了 http 请求过来时,web 创建的那个 HttpServletRequest 对象,这个对句在 Controller 的 request 属性中

而你开启的线程并不是 http 请求过来激发的 Controller,这时候 request 是不可用的

一定要先了解好程序执行的流程,线程在后台跑是与 controller 被 http 请求是完全无关的

枫叶vv

2018-03-31 12:46

@JFinal 是request请求过来的呀

枫叶vv

2018-03-31 12:47

@JFinal 我是从浏览器 请求的我这个方法

枫叶vv

2018-03-31 13:15

@JFinal 多谢 Injector.injectModel(ReceiveMessagesDao.class,request,false); 我在构造方法中加上HttpServletRequest 启动线程 再把request传到这个类里来获取 dao 现在可以了。

JFinal

2018-03-31 14:50

@枫叶vv 请求过来后你创建了独立的线程,这与请求过来的那个线程分道扬镳了,与前面说的情况几乎是一回事,在这两个线程的路上分别设置一个断点去感受一下

JFinal

2018-03-31 14:53

@枫叶vv 你后面这个方案会有问题,先从 request 中获取参数,然后传给新线程

热门反馈

扫码入社