spring集成以后万一要修改,直接改xml就好。

解决方案 »

  1.   

    首先声明,我自认为对Struts已经比较熟悉,就没有去再看文档,凭自己的使用经验写啦。如有不对之处,请多指教。呵呵。DynaActionForm的优势在于:
    1、可以省写一些类(但你得多写配置)
    2、当ActionForm的结构有变时,你只需要改配置文件,而不需要改Java源代码,换言之,不需要重新编译(但一般不会变)我不喜欢使用DynaActionForm。原因有二:
    1、没法重写validate()方法,只能通过验证器框架验证,或者在Action中去验证。
    2、影响性能。虽然其getString()可以直接返回String,但你的项目中的数据不可能都用String吧?因其get()返回Object,所以你必须做类型转换。另外,印象中DynaActionForm不支持基本数据类型,当你需要int、double等类型的值时,不得不进行装/拆箱的操作,何必?所以,除非有足够的理由,我不会使用DynaActionForm或其子类。建议楼主,不必怀疑自己!就实际创建一个ActionForm的实现类吧。用实体类的对象作为其成员,不需要多写多少代码,也不需要经常变化,使用起来还非常方便。以用户模块为例,你之前肯定已经建好一个实体类,假如叫 User
    则你的ActionForm可以这样写:
    public class UserForm extends ActionForm
    {
      private User user = new User();//记得一定要初始化!  //getter & setter  //other methods
    }
      

  2.   

    另外,很多工具可以直接生成实体类,如果加上hibernate的话,直接从数据库生成类非常方便当然,有的时候需要几个类映射到一个表,这个时候可能需要自己写代码。
      

  3.   

    由于页面控件较少可以使用动态formbean,动态formbean不必写UserForm.java
        只需要在struts-config.xml中配置如下:
       <form-bean name=" userForm " type="org.apache.struts.action.DynaActionForm">
       <form-property name="name" type="java.lang.String"/>
       <form-property name="sex2" type="java.lang.String"/>
       <form-property name="sex" type=" java.util.Collection "/>
    </form-bean>由此可以看出动态formbean对控件较少的页面更简单,它不必写set get 方法但必须有
    type="org.apache.struts.action.DynaActionForm动态formbean的使用:
        DynaActionForm dyForm=( DynaActionForm) form;
        String name=dyForm.get(“name”);
         dyForm.set(“name”,xiel);