DynaActionForm是动态的而不需要写具体的类吧,为什么你的<form-bean name="TestForm" type="com.test.TestForm"> 
写的是com.test.TestForm呢???改成这样<form-bean name="TestForm" type="org.apache.struts.action.DynaActionForm" />

解决方案 »

  1.   

    因为我需要扩展DynaActionForm, 修改其默认的reset() 方法,加入我自己的操作,所以需要用一个form 来 extends DynaActionForm
      

  2.   

    那你为什么不继承actionFrom一样有reset方法,
    public class WeqForm extends ValidatorForm {
    /*
     * Generated Methods
     */ /** 
     * Method validate
     * @param mapping
     * @param request
     * @return ActionErrors
     */
    public ActionErrors validate(ActionMapping mapping,
    HttpServletRequest request) {
    // TODO Auto-generated method stub
    return null;
    } /** 
     * Method reset
     * @param mapping
     * @param request
     */
    public void reset(ActionMapping mapping, HttpServletRequest request) {
    // TODO Auto-generated method stub
    }
    }
      

  3.   

    因为我需要DynaActionForm的用处: 可以动态配置form中的属性;你的回答不在点子上,建议你先看一下struts中关于DynaActionForm的使用。另外我单步调式过,form.getClass() 打出的确实是com.test.TestForm,  但是确不能转型,用(form instanceof TestForm)做判断也是false.
      

  4.   

    当然不能转型了。你的TestForm继承了DynaActionForm,没错,所以你的配置
    <form-bean name="TestForm" type="com.test.TestForm"> 
        <form-property name="name" type="java.lang.String" initial="wilson"/> 
        <form-property name="age" type="java.lang.Integer" initial="0"/> 
    </form-bean> 
    相当于
    <form-bean name="TestForm" type="org.apache.struts.action.DynaActionForm"> 
        <form-property name="name" type="java.lang.String" initial="wilson"/> 
        <form-property name="age" type="java.lang.Integer" initial="0"/> 
    </form-bean> 其实一样,调用的基类DynaActionForm动态构造你的TestForm,请注意TestForm不是com.test.TestForm.
    配置文件中form-bean name="TestForm" 是用com.test.TestForm(其实是org.apache.struts.action.DynaActionForm)来动态构建 name="TestForm"的form.所以你的com.test.TestForm和name="TestForm"的TestForm根本不是同一个Form.不知道你明白意思没有。