2016-09-17 20:50

直接使用 redirect(url) 即可

2016-09-17 11:21

这种问题极度容易解决,照这个思脉处理一下:
1:查看控制台的 JFinal Action Report 输出,看ExceptionInterceptor是否拦截了该请求
2:确保当前请求拦截以后,在 catch 块中设置断点,看是否捕捉到异常
3:如果没有捕捉到,再检查一下是否有别的拦截器将异常吃掉没有再次抛出
4:注意改过的代码是否不生效,eclipse 有时会有这个 bug
5:终极方案,单步调试,看程序到底怎么走的。建议直接使用终极方案,少走弯路

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-15 17:59

search() 方法中是在 render("article_search_list.jsp"),而提示却是 /admin/article/search.jsp 页面找不到,很明显是该 render 方法未被执行,进而推断出 search() 方法未被执行,再进而推断出是有拦截器未让该请求前行至 search() 方法

看一下控制台输出的 JFinal action report 就全明白了

2016-09-15 10:42

@海哥 应该是四年多,简单够用,quartz 过于庞大

2016-09-14 17:45

@zy625080069 jfinal 手册中有详细说明,在此下载手册:http://www.jfinal.com/download?file=jfinal-2.2-manual.pdf

2016-09-14 17:30

估计是 ActiveRecordPlugin 没启动

2016-09-14 17:29

@精彩飞扬 这下有需要同学直接 copy 就可用了,又节省了一半以上的时间,感谢分享

2016-09-14 17:27

没实际用过 javamelody 这个东东,很久看到过,貌似就放入 jar 包,改下 web.xml 就可以用了。将 jfinal 项目当成普通的 java web 项目来用就可以了

2016-09-14 16:31

@cnzzr jfinal 官方出品的插件必然好用

2016-09-14 16:30

ActiveRecordPlugin 启动没有? me.add(arp) 这行代码没?

2016-09-14 11:51

@sphsyv 为保障 jfinal 的极简性,能被划分为 jfinal 核心的常用的功能才会被做到 jfinal.jar 中去,所以 jfinal 开源四年以来,经历过 20 多个版本的升级,仍然保持在 300KB 左右大小的体积

jfinal 内部的插件与 Kit 绝大部分都可单独使用,多多支持社区发展

2016-09-14 11:18

@IvyHelen 所以 jfinal 社区会更负责任地为大家提供专注的优质分享,而不是来很多娱乐性地、扯淡的内容来浪费大家的生命,这个世界不缺少娱乐,有太多娱乐在消耗着大家的青春