2019-08-09 09:07
@lzw0128 是在 activeRecordPlugin.start() 时加载进去的,你可以在 configPlugin 中去掉
me.add(activeRecordPlugin)
然后添加一行:
activeRecordPlugin.start();
相当于是自己手动 start() ,在文档中有过说明:
https://www.jfinal.com/doc/5-15
2019-08-08 21:08
添加 @Before(Tx.class) 以后,jfinal 会生成代理实现 AOP,那么你的那个出错的方法得到的 class 类型就不对了,将 getClazz() 方法内部按下面的办法改进一下,大致如下:
getClazz() {
Class c = getClass();
if (c.getSimpleName().indexOf("$$Enhancer") != -1) {
c = getSuperclass();
}
Type t = c.getGenericSuperclass();
// 后面的代码不变
大致的意思是,先获取一次 getClass() 看这个类是不是 jfinal 生成的代理类,如果类名中包含 "$$Enhancer" 则是生成的代理
如果确实是代理,则调用一次 getSuperclass() 获取其父类,至此的流程就对上了你以前的代码了
记得搞定后回来反馈一下
2019-08-08 17:51
@liucanghai 通过继承 Dialect 扩展很方便,扩展完后一行代码的事:
arp.setDialect(new ...);
2019-08-08 17:22
@tianci121404 jfinal 现有的工具类也可以方便支持,例如:
1: 弄一个指定配置文件类型的配置项,这个配置项可以放另一个配置中,也可以放在现有的某个配置文件中,甚至可以放在启动参数中
2:这里以将该配置项放在 dev-config.txt 为例,先在 dev-config.txt 中放入当前运行环境需要的配置文件名,例如:
configFile=product-config.txt
3: 在 configConstant(Constans me) 方法中添加如下代码;
String configFile = new Prop("dev-config.txt").get("configFile");
PropKit.use(configFile);
4:不同的运行环境只需要修改 dev-config.txt 中的 configFile 值即可
2019-08-08 16:53
@JPEGIF forwardAction(....) 即可
如果要传递数据的话:
set(key, value);
forwardAction(...);
2019-08-08 11:08
@liucanghai 还有一个办法是升级到 jfinal 最新版, 照着升级文档来做,分分钟的事:
https://www.jfinal.com/doc/14-1
2019-08-07 18:03
@liucanghai 通过现有的 Db.queryLong(...) Db.find(...) 封装一个工具方法,参考现有的 paginate 方法
2019-08-07 11:17
@Relyn 将所有前端页面丢到 _view 里头去以后,代码并不需要改多少,java 代码这一头在 Routes 添加一行代码:
setBaseViewPath("/_view");
参考 jfinal club 项目中的 FrontRoutes
页面之中要改的就是 #include、#render 指令的模板路径, 当然这个不是必须要改,因为没有路径时默认就是当前路径,例如下面是无路径用法:
#include("_layout.html")
还可以使用相对路径,例如:
#include("abc/def/_layout.html")
以及向上路径表示法:
#include("../common/_layout.html")
总之,java 侧只动 Routes 添加 setBaseViewPath("/_view"),后端在使用绝对路径时只动 #include、#render
最后,建议所有 web 静态资源全放在 webapp/assets 目录下面,同样是参考 jfinal club