Action内容如下:public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
    /**@todo: complete the business logic here, this is just a skeleton.*/
    CreateDogForm createDogForm = (CreateDogForm) actionForm;
    String flag = httpServletRequest.getParameter("flag");
    String[] chk = httpServletRequest.getParameterValues("chk");    if(flag==null)
    {
      return actionMapping.findForward("show");
    }else if(flag.equals("insert"))
    {
      System.out.println("insert");
      Dog dog = new Dog();
      try {
        dog.insertM(createDogForm);
      }
      catch (SQLException ex) {
      }
      catch (Exception ex) {
      }
      return actionMapping.findForward("show");
    }else if(flag.equals("goupdate"))
    {
      Dog d = new Dog();
      Vector v = d.selectM("and id="+chk[0]);
      createDogForm = (CreateDogForm)v.elementAt(0);
      return actionMapping.findForward("add");
    }else if(flag.equals("goinsert"))
    {
      System.out.println("goInsert");
      createDogForm = new CreateDogForm();
      System.out.println(createDogForm.getName());
      return actionMapping.findForward("add");
    }      return actionMapping.findForward("show");
//    }
  }

解决方案 »

  1.   

    Struts-config.xml
    内容如下:
    <struts-config>
      <form-beans>
        <form-bean name="createDogForm" type="test.CreateDogForm" />
      </form-beans>
      <action-mappings>
        <action input="/2.jsp" name="createDogForm" path="/createDogAction" scope="session" type="test.CreateDogAction" validate="true">
          <forward name="add" path="/jsp1.jsp" />
          <forward name="show" path="/jsp2.jsp" />
        </action>
      </action-mappings>
    </struts-config>唉!没有用过taglib,怎么这么不好用呢!
      

  2.   

    奇怪在action中间,我用createDogForm = new CreateDogForm();
    就是不行!显示在页面上仍然有值,然后用creatDogForm.setXXX="";
    都设置一遍,就好了!页面上没有值了!
    在action中间用
    Vector v = d.selectM("and id="+chk[0]);
          createDogForm = (CreateDogForm)v.elementAt(0);
    取出转换成form就不行,挨个进行createDogForm.setXXX竟然就可以了!
    为什么呀!
      

  3.   

    <action input="/2.jsp" name="createDogForm" path="/createDogAction" scope="session" 
    改为request
      

  4.   

    scope="session" 改为request
    看到你的代码,感觉有些不合理,你的很多业务业务规则不应该写在action,action只是扮演Ctroller的角色,应该把业务单独拉出来作一个BO层
      

  5.   

    而且你可以考虑使用DispatchAction而不用action这样你可以把Insert,Update,Delete单独放在一个action里多个方法中实现,逻辑清晰些吧
    相应的你要改
      <action input="/2.jsp" name="createDogForm" path="/createDogAction" scope="request"
       parameter="method"> 
    而在jsp中你可以:
    <html:form action="createDogAction.do?method=insert">
      

  6.   

    你在ACTIONFORM中的reset方法加上内容即可
      

  7.   

    设置成request不可以!设置成request之后,我的修改页面!还是刚才那个add.jsp
    我想让它显示要修改的值!结果出不来了!
      

  8.   

    我用
    createDogForm = (CreateDogForm)v.elementAt(0);
    来生成这个from,值没有代过去!
    但我createDogForm.setName(tempForm.getName());
          createDogForm.setAge(tempForm.getAge());
          createDogForm.setTel(tempForm.getTel());
    这样挨个设置的话,却代过去了!这是为什么呀!
    Octer(米粒)
      

  9.   

    这两个用起来有区别吗?是不是因为内存地址不一样了!
    在(CreateDogForm)v.elementAt(0);中可是new了一个的!
    难道这个有区别!
      

  10.   

    设置成request之后,值没有传入到下一个页面呀!应该是存在的呀!
      

  11.   

    我的意思是添加合修改是同一个页面,还有一个列表页面!
    在列表页面中选择要修改的记录,在action中间生成该form,在添加(修改)页面,没有显示出来它的值!
    如果用session的话!就有值!
      

  12.   

    先不说你使用ACTION合理不合理,你连JAVA的基本概念都没弄明白,JAVA中对象参数都是引用形式的。createDogForm = new CreateDogForm()是不会改变被引用的那个对象的任何数据啦。直接调用被引用对象的setXXX是改变的被引用对象的值,所以有效。而框架自动对应的是那个被引用的对象。
    如果只是学习,那用用session也无所谓, 不过实际引用中通常都是使用request周期。在request周期中formbean的值是不会丢失的。
      

  13.   

    恩,无论如何,都不应该createDogForm = new CreateDogForm();action里form是不需要new的,修改值后,你把form里的值在重新设一次
      

  14.   

    to pqds(一个女农民) :
    在list页面中如果修改一条记录,则只是将该记录ID传到修改(同时也是增加)页面,你可以这样做,通过一个action去取的要修改的记录,填到formbean中的属性(你不需要new 那个formbean),
    然后在action里forward的那个页面,数据自然就都带过去了,这样还不行只能是你的问题了,
    呵呵
    碍,这年头“赚点专家分”真不容易呀):
      

  15.   

    而你增加,也是同样通过action但这时候
      

  16.   

    明白了!但是request的时候!用的是forward,应该是分发试图的!
    这个actionform在下一个页面应该是有值的!
    但是还是显示不出来奇怪了!
    欢成session就可以了!但是中间没有其它页面了!
    直接由action转到页面上的呀!