您的位置:首页 > 编程语言 > Java开发

Struts中的动态ActionForm

2009-11-16 19:22 309 查看
 

Struts动态调用ActionForm的方法
2009-07-16 11:49

所谓的动态actionForm就是不用特意为每个表单编写具体的actionForm类。
使用actiomForm的缺点:ActiomForm会增加会增加一个类的绝对数量,其次如果对应的actiomForm
表单的html表单出现添加和删除属性,ActionForm就要修改重新编译,如果html表单是动态的话,那actiomForm就无能为力了。
Struts引入了动态的actionForm来解决这个问题,struts中的DynaActionForm类及子类实现了动态加载actionForm类,我们不用另外编写相应的actionForm类,DynaActionForm会根据相应的配置属性动态加载actionForm.
区别于普通的actionForm设置,只是在<form-bean>中的type设置为DynaValidatorForm类。
(1)首先在struts_config.xml中定义ActionForm名字,和相对应的路径类,利用<form-beans>的子元素
<form-property>使动态的ActionForm具有属性。
<form-beans>
<form-bean
name="HelloAppActionForm" type="org.apache.struts.validator.DynaValidatorForm">
     <form-property name="userName" type="java.lang.String" />
     <form-property name="userPassword" type="java.lang.String" />
     <form-property name="checkNumber" type="java.lang.String" />
</form-bean>
</form-beans>

(2)然后在<action-mappings>里,映射相对的Action.
<action-mappings>
   <action input="/index.jsp" name="HelloAppActionForm"path="/HelloAppAction" scope="request" type="helloapp.HelloAppAction" validate="true">
<forward name="index" path="/index.jsp" />
</action>
</action-mappings>

(3)在jsp页面调用的情况如下代码。必须要在struts标签下调用。
<html:form action="/HelloAppAction.do" focus="userName">
            <bean:message key="HelloApplication.jsp.tips"/>
    <html:text property="userName" size="16"
c125
maxlength="16"/><br>
            <bean:message key="HelloApplication.jsp.enterPassword"/>
    <html:text property="userPassword" size="16" maxlength="10"/><br>
   <bean:message key="HelloApplication.jsp.enterCheckNumber"/>
<html:text property="checkNumber" size="4" maxlength="10"/><br>

    <html:submit property="submit" >
      <bean:message key="HelloApplication.jsp.submit"/>
     </html:submit>
    <html:reset property="reset">
      <bean:message key="HelloApplication.jsp.reset"/>
     </html:reset>
     <p><html:errors/></p>
</html:form>

访问动态actionForm的方法
  标准的actionform提供了get/set方法来读取和设置属性,而DynaValidatorForm把属性保存在Map中,因此保存actionForm的属性跟保存Map相似。
  下面是相关代码:
Pullic Object get(String name) ;   public void set(String name,Object value) ;
列子:
HelloAppActionForm.set(“username”, “sturts”);
String usernane = (string)HelloAppActionForm.get(“username”);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息