点击某个用户类型,下面显示了当前类型下的所有用户。同时在显示页面新增一个用户,填好信息后保存,但是返回到显示页面丢掉了类型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()到可以,但是会造成刷新重复提交

解决方案 »

  1.   

    你的 typeId 加入 set get 方法了么?
                 -------------java-木子[1]群 40110165 java-木子[2]群102715934---------
      

  2.   

      <result name="save" type="redirect">listUser.action </result> 你的 redirect 转向了,肯定丢掉request中的值了。
      

  3.   

    靠,为了避免重复提交就redirect啊
    你用token就可以搞定
    在这个action之前,先添加一个action,专门呢save一个token。然后在后面这个action,就是你现在这个action里面去判断是否token有效,无效就是重复提交。有效就继续。摆平。
      

  4.   

    save一个token和token是否有效,分别可以用this.saveToken(request)和this.tokenValid判断
    this是Action的对象
      

  5.   

    要传参数的话就不能用redirect了
    楼上该说的都说了
      

  6.   

    redirect 转向了,丢掉request中的值了。
      

  7.   

    除了使用token还有没有更好的办法
      

  8.   

    楼主你不能使用redirect,redirect会使这次请求数据丢掉,然后重新发送一个请求。重新发送的请求不包含原先的请求数据,因此会导致楼主的问题。
      

  9.   


    Token无非是先向JSP添加一个隐藏域,等待jsp提交后比较这两个值是否相等。一致就表示OK,不一致说明重复提交了。可以按照这个思路自己实现类似功能,虽说不是Token了,但思想还是一样的。不用Token,那就在业务跳转上做文章吧。
    比如,你注册成功后立即把界面跳转到用户列表去.请求变了,这个时候再refresh,发起的是后来的请求。
    总之就是注册后立即请求其他组件,只要不是注册本身这个请求就好。不知道说明白没有
      

  10.   

    <action name="addUSer" class="UserAction" method="saveUser"> 
      <result name="save" type="redirect">listUser.action?id=${你要保存的值就行呢} </result> 
    </action> 
      

  11.   

    哒哒哒......~
    高手我来了...~~~~~<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)