2019-08-12 21:17
@xiaofeivip_top 因此 inv.invoke() 机制是必不可少的,否则你在拦截器中无法停掉当前调用栈,也就是拦截器无论如何也起不到拦截的作用了
2019-08-10 21:29
@xiaofeivip_top 当你不调用 inv.invoke() 的时候,当前请求到此停掉,相当于你的拦截器拦截了这个请求
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 ...);