before(Tx.class)不生效

更换4.3jar后,before(Tx.class)不生效;

不知道是否是使用了Inject,还需要Duang.duang增强,在线求回答

评论区

JFinal

2019-09-08 16:09

如果是在 controller 上使用的 @Before(Tx.class) 则用法完全一样

如果是更换 4.3 以后,又接着改了代码,在 controller 中用了 @Inject, 那么要配置一下:
me.setInjectDependency(true);

JFinal

2019-09-08 16:10

因为 jfinal 默认并没有开启注入,需要配置一下才能使用 @Inject

码农

2019-09-10 23:05

me.setInjectDependency(true);已经配置了, @Inject在dao里面使用,包括@Before(Tx.class) 也是,但是无效

JFinal

2019-09-10 23:08

@码农 注意看一下这篇文档:
https://www.jfinal.com/doc/4-5

其中讲到了注入的一些原理

再一个,建议在 AopFactory 中设置断点,调试进去看看程序走向,一定可以解决的

我估计是因为对象的创建并不是 jfinal 接管的,所以不能使用 @Inject ,这种情况使用 Aop.get(...) 或者 Aop.inject(...) 即可

码农

2019-09-14 09:17

Db.tx(new IAtom() {
@Override
public boolean run() throws SQLException {
account.setCreateTime(new Date());
account.setType(JMAccountDao.TYPE_ADMIN);

JMResult result = accountDao.save(account, password, JMAccountDao.TYPE_ADMIN, getIp());
AccountAdmin accountAdmin = getModel(AccountAdmin.class);
accountAdmin.setAccountId(account.getId());
if (avatar != null) {
accountAdmin.setAvatar(JMUploadKit.uploadPath+"image/"+avatar.getName());
}
if (realImage != null) {
accountAdmin.setRealImage(JMUploadKit.uploadPath+"image/"+realImage.getName());
}

boolean flag = accountAdminDao.save(accountAdmin);
if(flag){
if (roleId != null) {
accountAdmin = accountAdminDao.getById(accountAdmin.getId());
flag = roleAccountDao.band(accountAdmin.getAccountId(), roleId);
}
}

return result.isOk() && flag;
}
});

我改db,保存异常,数据不回滚

码农

2019-09-17 06:29

问题已解决,谢谢波总

热门反馈

扫码入社