2017-12-21 14:04

@YiQang 异常的 cause 部分没有

2017-12-21 13:11

jfinal ActiveRecord 支持保持 select 出来的字段次序,只需要下面一行配置即可:
activeRecordPlugin.ContainerFactory(new OrderedFieldContainerFactory());

2017-12-21 13:09

升级到 jetty 9.2 这个版本以后,jdk 8 的用户可以自行引入最高版本的 jetty 来愉快的使用了,而 jdk 7 的用户只能用 jetty 9.2

2017-12-21 13:08

补充一下,后续 jfinal 版本会升级到 jetty 9.2 这个版本,这个版本貌似支持 jdk 7,但不支持 jdk 6,还可以接受

2017-12-21 13:08

jetty 9 需要 jdk 8 的支持,为了照顾 jdk 6、7 的用户, jfinal 整合 jetty 启动的 JFinal.start(...) 方法暂不支持 jetty 9

当然,上面仅针对于 JFinal.start(...) 这一种启动方式来说的,你可以用上 jetty 9.4 它自己本有的启动方式来启动,还可以用 jetty-maven-jetty 来启动都可以

2017-12-21 13:01

@阿帕奇 jfinal 3.3 发布以后,最好的整合方式是通过扩展一个 ControllerFactory 出来,接管 controller 的创建,然后对创建出来的 controller 进行注入动作,这里是一个实际的项目:
https://gitee.com/duaicxx/Ioc_Manager/tree/3.3.1/src/main/java/org/dval/controllerfactory

我将实际的代码也贴在下面:
public class IocControllerFactory extends ControllerFactory {
public Controller getController(Class controllerClass) throws InstantiationException, IllegalAccessException {
Object target = super.getController(controllerClass);
InjectUtils.inject(target);
return (Controller) target;
}
}

有了上面的代码后,配置一下 ControllerFactory 即可:
me.setControllerFactory(new IocControllerFactory ());

用拦截器整合 spring 用到的拦截器,可以被 @Clear 注解清除掉,所以没有上面这个办法好

2017-12-21 12:55

老版本 mysql 的事务级别默认是 2,在有些对事务级别要求高的代码中不够用。

此外,还有一个可能是不小心的坑,以往很多人是由于上一次数据提交成功以后,再一次测试时将上次的数据结果误认为是本次事务没有回滚

2017-12-21 12:54

确定一下下面的几项:
1:如果用的 mysql,确定一下是不是用的 InnDb 引擎,老版本 msyql 使用的默认的 MyIsam 引擎是不支持事务的

2:在 Tx.java 中放个断点,看一下 conn.rollback() 这行代码是否被调用过

3:事务级别是否足够高,一般事务级别调到 4 就可以了,调整方法是:
arp.setTransactionLevel(4)

2017-12-21 12:33

@赵春辉 后来发现这个分享中的 cron 表达式是针对 quartz 的, cron4j 不能使用。

新版本的 jfinal 手册对此已经添加了详细的文档,看文档足够会使用了。

此外,这里还有一个针对 linux 的 cron 表达式的网站:https://tool.lu/crontab
但是要注意除号增量用法是与 cron4j 不同的,这个在最新版本的 jfinal 手册中有进行了说明

总之,以 jfinal 手册上的为主

2017-12-21 12:31

@我要做菜鸟 这个我考虑后续做到 jfinal demo 中去,session 的事情还是在业务层面处理比较好,毕竟无法阻止用户去使用底层最基本的 session 对象

2017-12-21 12:28

eclipse 的部分版本不支持,这个我现在也不知道原因,这里是一个更多相关信息量的贴子:
http://www.jfinal.com/feedback/2429

2017-12-21 12:26

如果是用的 tomcat 部署,注意一下 tomcat 的这个坑:
https://my.oschina.net/jfinal/blog/353062

2017-12-20 23:35

这个肯定是 #hasPermission 这个指令写得有问题,里面可能用了 toString() 来求值,当表达式是 String 常量的时候 toString() 正好是表达式的值,而当表达式是两个加法表达式时 toString() 就是错误的

找到 hasPermission 的实现,稍加改造就好

2017-12-20 23:33

@easymbol 何必这么麻烦,在项目中做一个 weixin 子模块,添加 action专用于处理微信的请求即可。

如果要用到多个域名,主站用一个域名,处理微信可用另一个域名,也可以用二级域名

2017-12-20 21:32

LogKit 仅用于 jfinal 自身在无法确定日志被初始化,以及无需真正做日志的场景,并非让用户用于其它情况

你的需求,需要先获取一个 log 对象:
private static final Log log = Log.getLog(Xxx.class);

然后再使用:
log.error(...);

这样出来的日志就会有很详细的格式