 
2017-10-13 10:31
@flyinkeke 分页功能需要有一个查询总页数的 sql 存在,例如 mysql 是这样:
select count(*) from ....
但是 count(*) 这种查询是与 order by 无关的,为了提升性能需要去掉 order by,mysql 以外的数据库干脆就会对 count(*) 带 order by 的 sql 直接报错,不允许
而要去掉这个 order by, 通常要用正则表达式。 但是 sql 语句可以是极其灵活和复杂的,例如你代码中的:
ORDER BY user_id NOT IN(7,8,9),score DESC;
用正则表达式确实可以覆盖并去掉你上面的 order by , 但代价是性能下降至少一个数量级
因此 jfinal 采用了如下权衡的方案:
1:对 order by 的移除,仅使用不影响性能的表达式,仅移除最常用的简单 order by 格式
2:对于不能移除的,使用 paginateByFullSql(...) 方法解决
设计就是权衡与选择,没有完美的设计
 
2017-10-13 10:25
@软件攻城狮 改变的 target 会对下一个 Handler 起作用:
target = "/path" + target;
next.handle(target, req, res, isHandled);
上面代码第二行的 target 对于 next 这个 Handler 对象来说是有效的
 
2017-10-12 00:15
@软件攻城狮 jfinal 自己在 com.jfinal.ext.handler 中的 Handler 都是这么来用的,极其好用,单步调试一下找出原因