问题来源:ssh项目中,经常需要对Action进行转发,以便业务处理完之后数据重新获取进行更新,而业务处理完需要反馈结果给前端,这时一般会用到addActionMessage方法,但是转发之后actionMessage会丢失,对于这个问题网上有很多方法,感觉有点麻烦,这里介绍一个我自己的解决方法。
例如在我的一个图书管理项目中:
一个新增图书的流程:
1.执行BookAction中add()方法
2.转发给BookAction中show()方法,实现数据重新更新
解决方法:
业务处理方法里面创建提示语,并把提示语放在session中。(提示语为js语言,能够在前端弹出对话框)
然后在转发到的那个action方法里面,获取session中提示语并放在actionMessage中,记得销毁提示语,不然下次调用这个方法还会出现这个提示语。
献上关键的2步代码(提示语根据自己需要进行替换):
转发前action方法:
String tip = "";
tip = "<script>alert(\""
+ "图书添加成功"
+ "\");</script>";
ActionContext.getContext().getSession().put("tip", tip);
Map<String, Object> session = ActionContext.getContext().getSession();
String tip = (String) session.get("tip");
//取出session中提示语放入ActionMessage中(解决转发时actionMessage丢失问题)
if(tip!=null&&tip.length()>0){
addActionMessage(tip);
session.remove("tip");
}