2018-11-01 19:45

@JM-java 已经在文档中添加了:http://www.jfinal.com/doc/5-7

感谢你的反馈,后面有同学碰到这个问题就能节省大量时间了

2018-11-01 17:15

@tuxming jfinal 的数据库操作部分仅仅是对 JDBC 进行了一个极薄封装,在本质上就是将你的 sql + para 直接扔给了底层的 JDBC,想要出错都是很困难的,因为 JDBC 是很稳固的

2018-11-01 17:13

@JM-java JDBC 默认的 Connection.TRANSACTION_READ_COMMITTED 适用于多数情况,jfinal 调高一级是为了避免某些用户的业务本身对事务级别本身要求就高,然后出错以后怪罪 jfinal,但这种事本质上是与 jfinal 无关的

2018-11-01 17:10

@可人的小石头 微信是用的 jfinal weixin 这个项目做的回调,支付宝是在后台手动添加的记录

2018-11-01 17:02

@zzh1234567 除了这个办法以外,还可能过继承 MetaBuilder 并覆盖其中的 isSkipTable 方法,通过判断 tableName 前缀或者通过正则表达式,跳过一些不需要处理的类

2018-11-01 15:31

@zzh1234567 数据库完全不动, 仅将你项目中的 oracle 的那个驱动 jar 包升级,这个与数据库升级完全无关

2018-11-01 11:14

缺少 freemarker 的 jar 包而已,注意看 NoClassDefFoundError

此外,建议升级到 jfinal 3.5,3.4 升到 3.5 没有什么考虑的,全是好处

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 , 迭代一下得到想要的