<data-sources />
  <form-beans>
   <form-bean name="dform" type="org.apache.struts.org.apache.struts.action.DynaActionForm">
   <form-property name="sname" type="java.lang.String"></form-property>
   </form-bean>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action path="/dyanAction" type="com.yourcompany.struts.DyanAction" name="dform">
      
    </action>  </action-mappings>
action加上name属性就错误
我是直接访问dyanAction.do

解决方案 »

  1.   

    path="/dyanAction"  这个需要吗?
      
      

  2.   

    1.动态ActionForm
          动态ActionForm是为了避免ActionForm膨胀而设计的,通过动态ActionForm可以获得标准ActionForm的所有功能。2.在strust-config.xml文件中需要这样配置
    Java 代码   1. <?xml version="1.0" encoding="utf-8" ?>  
       2. <!DOCTYPE struts-config PUBLIC  
       3.           "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"  
       4.           "http://struts.apache.org/dtds/struts-config_1_3.dtd">  
       5. <struts-config>  
       6.     <form-beans>  
       7.         <!-- 配置动态ActionForm -->  
       8.         <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">  
       9.             <!-- name 必须同表单中的属性保持一致,type必须写完整的路径 -->  
      10.             <form-property name="username" type="java.lang.String" />  
      11.             <form-property name="age" type="java.lang.Integer" />  
      12.         </form-bean>  
      13.     </form-beans>  
      14.     <action-mappings>  
      15.         <!--  
      16.             name 用来指定使用哪个ActionForm,并将此ActionForm设置到request范围内,在页面可以取得此ActionForm  
      17.         -->  
      18.         <action path="/dynaaction" type="com.yx.zzg.action.DynaActionFormAction"  
      19.             name="dynaForm" scope="request">  
      20.             <forward name="success" path="/success.jsp" />  
      21.         </action>  
      22.     </action-mappings>  
      23. </struts-config>  <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
    <struts-config>
    <form-beans>
    <!-- 配置动态ActionForm -->
    <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
    <!-- name必须同表单中的属性保持一致,type必须写完整的路径 -->
    <form-property name="username" type="java.lang.String" />
    <form-property name="age" type="java.lang.Integer" />
    </form-bean>
    </form-beans>
    <action-mappings>
    <!--
    name用来指定使用哪个ActionForm,并将此ActionForm设置到request范围内,在页面可以取得此ActionForm
    -->
    <action path="/dynaaction" type="com.yx.zzg.action.DynaActionFormAction"
    name="dynaForm" scope="request">
    <forward name="success" path="/success.jsp" />
    </action>
    </action-mappings>
    </struts-config>3.在你的Action中如何使用动态ActionForm
    Java 代码   1.         // DynaActionForm继承ActionForm,这里需要将ActionForm强制类型转换成 DynaActionForm  
       2.         // DynaActionForm将收集到的表单数据都放在一个map中,所以取得属性的时候通过get方法来获取  
       3.         DynaActionForm daf = (DynaActionForm) form;  
       4.         String username = (String) daf.get("username");  
       5.         Integer age = (Integer) daf.get("age");  
       6.     }  
       7.   
       8. }   // DynaActionForm继承ActionForm,这里需要将ActionForm强制类型转换成DynaActionForm
    // DynaActionForm将收集到的表单数据都放在一个map中,所以取得属性的时候通过get方法来获取
    DynaActionForm daf = (DynaActionForm) form;
    String username = (String) daf.get("username");
    Integer age = (Integer) daf.get("age");
    }}4.动态ActionForm采用EL表达式的输出方式:${dynaForm.map.username }
    原因是因为动态ActionForm将收集到的表单信息放到一个map里面,并且在方法中提供一个getMap的公共方法,所以获取的时候可以通过ActionForm获取map,然后获取map里面的属性。5.动态ActionForm的验证,通常使用动态验证框架validator 
      

  3.   

    正解, 就是要告诉action 你将要给他的form是什么类型的,指定type属性。 告诉他我这个时动态form.