你是不是
action1 {
  form.reset();
  forward(action2);
}整个流程是这个样子的form.reset();
form.setXxx(from HTTP request, request.getParameter())
action1.execute();form.reset();
form.setXxx(from HTTP request, request.getParameter())
action2.execute();

解决方案 »

  1.   

    你的意思是不是我在form.reset()后,
    要保存到request内?
    贴一下代码吧public class AddPersonInfoAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    PersonInfoForm personInfoForm = (PersonInfoForm) form;
                      /*
                         处理过程...
                       */
                      //actionform 全部清空  reset方法已经重写
                       personInfoForm.reset(mapping, request);
    return mapping.findForward(back);
                   }
    }我调转的action
    public class PersonInfoAction extends Action {
             public ActionForward execute(ActionMapping mapping, ActionForm        form,HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 这里的获得actionform有值
    PersonInfoForm personInfoForm = (PersonInfoForm)form;
    return mapping.findForward("");
             }
    }
    两个action是使用同一个actionform类型,
    那么我认为在PersonInfoAction 中的actionform对象
    是通过AddPersonInfoAction   forward过来的
    但调试结果好像不是这样,
    请问AddPersonInfoAction的actionform是从哪里获得的,难道不是request吗
      

  2.   

    form完全是同一个对象(struts-config配置的<action>的name和scope都一样的话,否则就是两个对象),但是,在你第一次action的恶性execute之后,Struts的controller会重新调用form的reset方法(这个在你这里倒无所谓、关键的是后面),然后重新populate,也就是重新从request的参数里面(request.getParameter也就是前面web页面表单传来的参数)把值一个个设置到form里面,然后再进后面的 action。也就是在你reset之后,form有被setXxx了一下你可以在form.setXxx里面debug或者打印一下,就可以知道了。
      

  3.   

    那就是说不论我在前一个action中如何处理form,
    在下一个action的form的还是会在controller中赋进去,虽说是一个对象。
    我的scope 是request,是不是在request的范围内,controller都会保存着jsp提交过来的值,
    而且在每次访问controller时,controller都会执行actionform的reset,
    并把表单值赋给acitonform,若连续跳转三个aciton,每次actionform在controller中都被重新写入的表单的值,是这样吗?
    那这样的话,我的东西不是无法实现了?
      

  4.   

    如果你想解决如何让它不填充页面数据,只需要在页面的每一个控件中写value=""就可以了,
     如果你想弄懂为什么会自动填充页面,那还得等高手指教,我也不太懂
      

  5.   

    确实是应该重定向,
    感谢shine333(enihs) ,aChinese(一个中国人) 
    感谢各位
    我把forward的redirect设为true,就好了,使request失效
    看来redirect默认的是false