2017-11-10 18:06

为了实现性能与功能的平衡,paginate 只支持普通 order by 的替换,而复杂 order by 用一下 paginateByFullSql 这个 API ,具体的用法可以看一下 jfinal 手册第 5.5 章节: 《5.5 paginate 分页支持》

大致原因如下:
1:分页需要生成 sql 去计算当前 sql 的总记录数据,而这个 sql 是不需要 order by 子句的,sql server、oracle 这些数据库甚至不支持 select count 带有 order by 子句,所以 order by 一定要移除

2:由于 sql 语句可以嵌套可以很复杂,如果想用正则表达式非常干净地移除 order by 子句,那么这个正则表达式就要写得非常复杂冗长,比复杂冗长更麻烦的是:经实测这个正则的执行效率会下降一到两个数量级

3:大部分的 order by 是比较简单的,所以为了兼顾性能功能,让 paginate 只支持简单 order by,其它情况用 paginateByFullSql 支持

2017-11-10 17:20

@芦苇 具体代码分享出来啊,在这里贴下代码,说不定很多人需要:jfinal.com/share

2017-11-10 17:02

@simplife 其实不需要手动添加 druidPlugin.start(),而是要 me.add(druidPlugin),否则 jfinal 框架没法回调你的 druidPlugin.start(),就只能自己调用了

2017-11-10 16:48

ActiveRecordPlugin 缺少 DataSource 或者 DataSourceProvider 参数,也就是说缺少数据源,所以无法启动

在首页右侧下载 jfinal demo,里头有实际的例子

2017-11-10 16:47

可以写个拦截器,将所有 cookie 保存在一个 map中,然后在 enjoy 中读,例如:
public class CookieInViewInterceptor implements Interceptor {
public void intercept(Invocation inv) {
这里用一个 map 来封装所有 cookie,假定为key 为 cookie
inv.getController().setAttr("cookie", cookieMap);
inv.invoke();
}
}

2017-11-10 16:45

页面中读取 cookie 建议直接用 javascript 的 api

如果要用 enjoy 读取 cookie 的内容,需要自己写点代码扩展, enjoy 被设计成可以在非 web 环境下使用,所以不能与 servlet 耦合,就没有支持直接读取 cookie

参考 me.add(new SessionInViewInterceptor()) 的做法,添加这个拦截器以后可以在页面用 #(session.value) 来读取 session 中的内容。 cookie 的处理也可以类似

2017-11-10 16:09

新建表以后,再次运行一下 Generator 就可以生成出来了,自动化检测

2017-11-10 16:08

@miracle佐 指令是区分大小写的,如果希望不区分大小写,可以添加这几个指令的别名指令,例如:
arp.getEngine().addDirective("SQL", new SqlDirective())

只不过这样做只是支持了 sql 的大写指令,而 if for define 这些指令仍然不支持。

这个就跟 java 代码不支持大写的 IF FOR PUBLIC 是一个意思

2017-11-10 16:06

参考一下 jfinal weixin 中有关公众平台信息体加密的部分,项目地址: https://gitee.com/jfinal/jfinal-weixin

2017-11-10 13:20

A b = new A().set(a); 即可

2017-11-10 12:21

jfinal 自身整合的是 jetty 8 这个版本,是因为 jetty 9 需要 jdk 8,而大量的 jfinal 老项目还在用 jdk 6、jdk7,我个人是非常急迫地想升级到 jetty 9 版本的

迟早要升到 jetty 9

2017-11-10 12:19

@augustine02 使用 JFinal.start(...) 的方式启动,需要 jetty-server-8.1.8 这个版本

如果不使用 JFinal.start(...) 启动项目,改用传统的、标准的启动方式,可以随意将 jetty 升到最高版本

2017-11-09 22:01

第一页就是 10 条数据,只不过 id 为 3 的数据被删了,所以最后一条的 id 是 11

2017-11-09 22:00

@一岁穿耐克 把 unsigned 去掉生成出来的就是 int 了,这个是由 jdbc 决定的,jfinal 并没有干预过

2017-11-09 21:57

@可乐加冰 使用模板引擎的功能的前提是,模板本身要被引擎“经手”

如果文件内容根本没走引擎,那么引擎就无法对其产生影响

单独放在 js 文件中,那么渲染该 js 文件也可以,例如: render("xxx.js"),这样渲染出来就会有效果, 如果 js 只能被引用,而不能被引擎“经手”,可以在 html 中渲染出值来,然后通过 js 方法调用传参的形式将值传过去