添加 @Before(Tx.class) 以后,jfinal 会生成代理实现 AOP,那么你的那个出错的方法得到的 class 类型就不对了,将 getClazz() 方法内部按下面的办法改进一下,大致如下: getClazz() { Class c = getClass(); if (c.getSimpleName().indexOf("$$Enhancer") != -1) { c = getSuperclass(); } Type t = c.getGenericSuperclass(); // 后面的代码不变
getClazz() {
Class c = getClass();
if (c.getSimpleName().indexOf("$$Enhancer") != -1) {
c = getSuperclass();
}
Type t = c.getGenericSuperclass();
// 后面的代码不变
大致的意思是,先获取一次 getClass() 看这个类是不是 jfinal 生成的代理类,如果类名中包含 "$$Enhancer" 则是生成的代理
如果确实是代理,则调用一次 getSuperclass() 获取其父类,至此的流程就对上了你以前的代码了
记得搞定后回来反馈一下