2016-09-18 12:26
@clatt 你可以通过 forwardAction("/") 转发到根路由上试试,注意,这里的 forwardAction 参数是指一个 action 路由,而不是静态资源
2016-09-18 12:25
@clatt ActionRender 中的 render() 方法本来就不需要实现,通过查看 com.jfinal.core.ActionHandler.java 源码可知原因,只需要 ActionRender.actionUrl 属性,而不需要其中 render 方法有任何动作
2016-09-17 11:14
全程没有使用事务,必然会有问题,核心在于任务调度线程在获取 task 记录,并让该记录的 lock 由 0 变 1 的过程在事务中并且是排它的,核心代码大致是如下的形式:
final Ret ret = Ret.create();
boolean isOk = Db.tx(new IAtom() {
public boolean run() {
Task taskList = Db.find("select * from task where lock=0");
String idList = IdKit.join(taskList); // 将 taskList 的所有 id 变成这样:(1,2,3)
int n = Db.update("update task set lock=1 where lock=0 and id in" + idList);
ret.put("taskList", taskList);
return taskList.size() == n && n > 0; // 只有取出来的数量与更新数量相同时才可以提交事务
}
}
if (isOk) {
处理 ret.get("taskList")
} else {
未获取到可处理的 task
}
2016-09-14 17:45
@zy625080069 jfinal 手册中有详细说明,在此下载手册:http://www.jfinal.com/download?file=jfinal-2.2-manual.pdf