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:26

照着 jfinal 手册一定没问题,更快的办法是下载首页的 jfinal demo 或者 jfinal demo for maven,直接导入后即可启动

2017-10-13 10:26

@linuxea 感谢你的帮助,要是有对回复点赞的功能就好了,为你点赞

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 都是这么来用的,极其好用,单步调试一下找出原因

2017-10-12 00:14

你的 order by 子句比较复杂,所以需要使用 paginateByFullSql ,具体用法见 jfinal 手册

2017-10-11 18:33

先观测控制台输出的 jfinal action report 中的 parameter 一栏中是否有数据,如果没有的话,就要使用下面的代码获取数据:
String jsonString = HttpKit.readData(getRequest());

获取完数据,你可以使用自己喜欢的工具转成各种 java 对象,例如可转成 Map:
Map map = FastJson.getJson().parase(jsonString, Map.class);

2017-10-11 16:56

这种场景,我更建议返回点数据,例如: renderText("ok")

2017-10-11 16:55

这种需求理应请出: renderNull()

2017-10-11 15:55

这个一定得点赞收藏, 我自己都没时间处理这个问题,感谢感谢

2017-10-11 10:35

@mekain 重新下载,重导入一次

2017-10-10 20:39

dialect 要配置为 OracleDialect

2017-10-10 20:38

添加好 jetty-server-8.1.8.jar 这个依赖,如果是 maven 项目,参考你手头的 jfinal club 中的 pom.xml 中的 jetty 依赖配置,如果是非 maven 项目,参考一下首页的 jfinal demo

2017-10-10 20:36

你用的是 jfinal-java8 这个分支版本,而你的 action 又使用了参数注入功能,所以需要配置一个 -parameters 参数,具体配置方法在 jfinal 手册中有详细说明,并且配了图

2017-10-10 20:34

异常是一个最基本的异常:Caused by: java.lang.ClassNotFoundException: config.MainConfig

仔细看看这个类文件是不是存在, 如果存在,看看包名对不对