执行action之后跳转,然后刷新则又执行了一次action的诡异有关问题
阅读
删除的action如下:
- Java code
public String deleteAthleteSignup1() throws Exception { try { // 删除athlete里面的countNumber athleteSignup = this.athleteSignupService.findById(id); // athlete = athleteService.findById(aid); athlete = athleteSignup.getAthlete(); athlete.setCountNumber(athlete.getCountNumber() - 1); // 删除team里面的countNumber team = athleteSignup.getEvent().getTeam(); team.setCountNumber(team.getCountNumber() - 1); this.athleteSignupService.updateAthleteSignup(athleteSignup); this.athleteSignupService.deleteAthleteSignup(id); listAthleteSignup = this.athleteSignupService.findByAthleteId(aid); } catch (Exception e) { e.printStackTrace(); return INPUT; } return SUCCESS; }
配置文件如下:
- XML code
<action name="athleteSignupDeleteBy" class="athleteSignupAction" method="deleteAthleteSignup1"> <result name="success">/web/athleteSignup/findByAthleteId.jsp </result> <result name="input">/web/athleteSignup/deleteError.jsp</result> </action>
删除之后,返回,数据是删除了。返回的也正常,因为action里面有个listAthleteSignup 页面自然就可以读取了。
但是,为什么删除action执行之后,跳转了,到这里都一切正常!但是,我再刷新一次的时候,他又执行了一次刚才的删除action,所以就导致页面报错了。请问是为啥呢?
但是另外一种写法:
- Java code
<action name="saveEventBatch" class="com.yaxing.action.EventAction" method="saveEventBatch"> <result name="success" type="redirectAction"> <param name="actionName">event/findByTeam.action</param> <param name="id">${session.userId}</param> <param name="fullName">${fullName}</param> </result> <result name="input">/web/event/error.jsp</result> </action>
这样执行之后,再刷新是没的问题的。很纠结呢。谢谢。
------解决方案--------------------
刷新相当于重新提交数据,当然会重新执行一次删除。
如果要避免重新提交数据,一般是三种做法:
1、删除动作是弹出页面执行的(没东西让用户刷新了);
2、删除成功后做页面跳转(必须是浏览器端页面跳转,不能是服务器端的forward);
3、用Ajax提交删除动作(刷新并不管Ajax提交的东西)。
------解决方案--------------------
token防止用户重复提交表单
1.在<from>下添加<s:token></s:token>
2.在struts2中添加
<interceptor-ref name="token"></interceptor-ref>--添加拦截器
<result name="invalid.token">/admin/token.jsp</result>--添加拦截到时跳转的页面
------解决方案--------------------
------解决方案--------------------
加redirect后url重定向了,就是说地址栏地址变了。
不加redirect,跳转后地址不变的,所以刷新会再次提交。
阅读
上一篇:oracle调用存储过程有有关问题,求高手解答 下一篇:返回列表