2018-11-01 11:13

因为每次请求过来,都是使用新创建的 controller 对象处理请求的,该 controller 对象是线程独享的,所以线程安全

具体代码在 ActionHandler 中有一个 controllerFactory.getController(...);

2018-11-01 11:09

未调用 remove() 方法移除对象,那么该对象会一直被 Thread 持有,该 Thread 下次接收到任务时可以再次获取到前面创建的对象,从而实现了类似对象缓冲池的效果

jfinal 官方这周会将 tomcat\jetty 换成 undertow,不会再出现这样的提示

2018-11-01 11:06

这个是 tomcat 的误判,不用理会

tomcat 在 shutdown 或者 restart 的时候检测到 ThreadLocal 中有数据没有 remove(),报了一个消息而已。

这个误判会让 shutdown 稍微慢十秒到二十秒,不影响使用,误判输出的日志在 tomcat 自己的日志中,而且仅会在 shutdown 和 restart 中出去

ThreadLocal 的 remove() 是一种用法,不 remove() 是另一种用法,这是完全合理的用法

翻看一下 JDK 的 ThreadLocal 源码,不去 remove 是正确的用法,只要你保证在线程使用数据之前,清掉上次使用过的无用数据即可

2018-11-01 11:02

@michelle 这个功能仅仅是开发时用的,功能在 JettyServer.java 中,你生产环境完全用不到这个类,所以生产环境完全无影响

2018-11-01 11:01

用 jfinal enjoy 模板引擎一个 #for 指令打完收工:
#for ( x : donateList )
#(x.nickName)
#(x.amount)
#end

2018-10-31 19:25

@gdever 或许可以,不记得里面是否直接有这样的方法,即便是没有,你可以通过里面的一个方法获取 EntrySet , 迭代一下得到想要的

2018-10-31 19:25

应该是你往 session 中存放了一类数据,这类数据无法被 session 持久化

看一下 JettyServer.java 源码的 void persistSession(Server server) 方法,是用来在重启项目时先保存 session 到文件之中,便于在开发类似登录功能时免除反复的登录,提升开发体验

解决办法是找到那个被保存在 session 中,而不能被持久化的对象,不要将它放在 session 之中,注意这个对象可能深藏在对象的对象的对象之中,所以要根据异常提示细心追踪

还有一个办法是继承一下 JettyServer,在报异常的地方用一个 try catch ,不让它抛出异常

2018-10-31 19:18

@freejava09 使用全局拦截器,然后可以判断客户端类型,一类客户端 render 保持不变,另一类客户端 inv.getController().renderJson()

一套代码,同时解决两个需求

2018-10-31 17:21

@66666666 显然是 JSONObject 不支持这个 model ,估计是它只支持 getter 方法型的转换,使用 jfinal 生成器为所有 model 生成 getter 方法极好

2018-10-31 16:52

@ttjs2013 这个是因为 jfinal 3.5 已经默认支持 action 带参,而 WeixinMsgController 中正好有几个带参的 action, 但是你的 eclipse 没配置好,所以会有提示,文档中已经有过说明:
http://www.jfinal.com/doc/3-3

可通过配置 eclipse 解决,也可以不必理会。 还有一种解办法是引入一个中间类,例如叫 MyWeixinMsgController extends WeixinMsgController ,然后在其中覆盖掉父类那几个有提示的方法,并在这些方法之上使用 @NotAction

最后,让你原先继承 WeixinMsgController 改为继承 MyWeixinMsgController

jfinal weixin 2.2 已经使用 @NotAction 改进过 WeixinMsgController

2018-10-31 16:49

TableMapping.me().getTable(...).getName()

getTable 获取到一个 Table 对象,里面有很多方法可以获取到

2018-10-31 16:48

终级解决办法就是单步调试

2018-10-31 16:48

@66666666 这个就更好解决了,单步调试,看是哪一步数据没了,是数据库过来就就没了,还是怎么?

2018-10-31 16:07

@yunmuzhou 没有错误日志就一定要先配置好日志,让错误一定要在日志中出现,否则以后出现任何问题都无从查起,养成好习惯

例如 log4j.properties 是否配置好