2017-11-14 11:04

多个版本的 c3p0 互相干扰,处理干净一下,注意,如果是多个项目部署在同一个 tomcat,以及 tomcat 下的 lib 包下面有 c3p0 也会影响

2017-11-13 16:47

建议你先用一用 jfinal 自带的 Cron4jPlugin, 可以实定与 QuartzPlugin 类似的功能,jfinal 手册中有介绍用法

2017-11-13 16:46

不需要自己写 QuartzPlugin,只需要在 YourJFinalConfig 中添加一个
public void afterJFinalStart() 方法,然后在这个方法中将 quartz 用起来就好

jfinal 是 mvc + orm 框架,本质上来说,使用任何第三方,直接用就好,不一定要有一个整合的动作

当然,如果你写 IPlugin 也可以,写了可以在 configPlugin 中添加进去,jfinal 会回调其中的 start() 与 stop() 方法

2017-11-13 16:44

@augustine02 空指针异常,通常是 activeRecordPlugin 没有启动成功,例如,如果是 web 项目,有没有 me.add(activeRecordPlugin) 添加到 web 项目的配置中

如果不是 web 项目,有没有手动 activeRecordPlugin.start(),这个在手册中有过说明

2017-11-13 16:43

@augustine02 报什么异常,这才是解决问题的关键

说不行,要指出具体是什么不行的结果

2017-11-13 11:08

@iiixxxiii Controller 中的方法已经非常之多了,尽可能不增加,确实有需要的全放在 CPI 这个类之中了

2017-11-13 10:54

@iiixxxiii jfinal 3.3 近期发布,这个版本可以通过 CPI.init(controller , ...) 来调用这个方法

现在你可以通过拦截器来做公共操作,例如 inv.getController().setServletRequest(...) 这样的都可以

2017-11-10 22:07

安装 maven,而不要使用 eclipse/idea 自带的 maven,连好互联网,以免有些 jar 包下载不下来

如果还是不行,删掉 maven 库中相关的jar,让 maven 重新下载

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 的处理也可以类似