首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
before(Tx.class)不生效
码农
2019-09-07 13:36
更换4.3jar后,before(Tx.class)不生效;
不知道是否是使用了Inject,还需要Duang.duang增强,在线求回答
项目:
JFinal
1
评论区
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
问题已解决,谢谢波总
回复
发送
我要反馈
热门反馈
扫码入社
如果是更换 4.3 以后,又接着改了代码,在 controller 中用了 @Inject, 那么要配置一下:
me.setInjectDependency(true);