Struts中的动态ActionForm

 

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" 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”);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值