概述
在controller添加事务;
@Before(value = { ErrorInterceptor.class, Tx.class })
前面是拦截器处理自定义抛异常 拦截器把错误信息显示到页面
这种事务的写法 如果代码加了try 事务是不起作用的
必须手动抛异常
public class XXController extends BaseMsgController {}
刚开始 我写成了
@Before(Tx.class)
不管怎么弄都不好使, 这种写法是添加到方法上的
自定义抛异常代码: 下面catch里面 不手动抛异常 事务是不会回滚的 如果是在方法上面加 @Before...则不用手动抛 如果是在类上面整体加的需要手动抛异常
try {
order.update();
reVo = new ReVo(order);
} catch (Exception e) {
logger.info(e.getMessage());
Map<String, Object> map = new HashMap<String, Object>();
map.put("msg", "网络异常请刷新重试!");
UnifyThrowEcxp.throwExcp(e, map);
}
异常处理类:
public class UnifyThrowEcxp {
/**
* 统一抛异常- maps里面可自定义异常参数
*/
public static void throwExcp(Exception e, Map<String, Object> maps) {
Map<String, String> map = new HashMap<String, String>();
map.put("msg", e.getMessage());
map.put("text", e.getMessage());
if (!maps.isEmpty()) {
map.put("errMsg", JSONObject.toJSONString(maps));
}
throw new RuntimeException(JSONObject.toJSONString(map));
}
}
拦截器错误处理: 这里只是简单的 处理了一下 直接把错误信息render到了页面
public class ErrorInterceptor implements Interceptor {
public void intercept(Invocation ai) {
try {
ai.invoke();
} catch (Exception e) {
JSONObject jo = JSONObject.parseObject(e.getMessage());
ai.getController().renderJson(jo.toJSONString());
}
}
}
运行结果:
手动抛错调用的代码: 如果不添加自定义错误信息 就直接传一个 空的map就行
Map<String, Object> map = new HashMap<String, Object>();
map.put("msg", "测试测试测试!");
UnifyThrowEcxp.throwExcp(e, map);
菜鸟发帖 大神勿喷 纯属记录一下过程
最后
以上就是多情老鼠为你收集整理的记录一下JFinal 在controller 添加事务处理的全部内容,希望文章能够帮你解决记录一下JFinal 在controller 添加事务处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复