点击某个用户类型,下面显示了当前类型下的所有用户。同时在显示页面新增一个用户,填好信息后保存,但是返回到显示页面丢掉了类型id.。
action的文件大致是:
public class UserAction extends BaseAction<User>{ private String typeId;
public void setTypeId(String typeId) {
this.typeId = typeId;
}
public String toFrame() throws Exception{
return Constant.TOFRAME;
}
public String saveUser(){
service.save(user);
return "save";
}
}新增用户的配置文件如下
<action name="addUSer" class="UserAction" method="saveUser">
<result name="save" type="redirect">listUser.action</result>
</action>
原因是跳转的类型为redirect。如果不用redirect,action直接写return this.toList()到可以,但是会造成刷新重复提交
action的文件大致是:
public class UserAction extends BaseAction<User>{ private String typeId;
public void setTypeId(String typeId) {
this.typeId = typeId;
}
public String toFrame() throws Exception{
return Constant.TOFRAME;
}
public String saveUser(){
service.save(user);
return "save";
}
}新增用户的配置文件如下
<action name="addUSer" class="UserAction" method="saveUser">
<result name="save" type="redirect">listUser.action</result>
</action>
原因是跳转的类型为redirect。如果不用redirect,action直接写return this.toList()到可以,但是会造成刷新重复提交
-------------java-木子[1]群 40110165 java-木子[2]群102715934---------
你用token就可以搞定
在这个action之前,先添加一个action,专门呢save一个token。然后在后面这个action,就是你现在这个action里面去判断是否token有效,无效就是重复提交。有效就继续。摆平。
this是Action的对象
楼上该说的都说了
Token无非是先向JSP添加一个隐藏域,等待jsp提交后比较这两个值是否相等。一致就表示OK,不一致说明重复提交了。可以按照这个思路自己实现类似功能,虽说不是Token了,但思想还是一样的。不用Token,那就在业务跳转上做文章吧。
比如,你注册成功后立即把界面跳转到用户列表去.请求变了,这个时候再refresh,发起的是后来的请求。
总之就是注册后立即请求其他组件,只要不是注册本身这个请求就好。不知道说明白没有
<result name="save" type="redirect">listUser.action?id=${你要保存的值就行呢} </result>
</action>
高手我来了...~~~~~<action name="addUSer" class="UserAction" method="saveUser">
<result name="save" type="redirect">listUser.action </result>
</action>
改成这样就OK了
<action name="addUSer" class="UserAction" method="saveUser">
<result name="save" type="chain">listUser</result>
</action>
redirect重定向会丢失掉request里所有值,struts2在result标签里提供了一个链的类型跳转,用这个跳转到另一个action里不会丢失相关的信息不用谢,一直被模仿,从未被超越!FORM:QQ群Java 2 Enterprise Edition(88509302)