自学SSH框架之---struts(五):动态的ActionForm(DynaActionForm)

17 篇文章 1 订阅
14 篇文章 0 订阅

在一个大的项目里面,actionForm会很多,那么有没有什么方法避免actionForm的膨胀呢?

有,那就是DynaActionForm,,它不用写actionForm类了(可以称为标准或者静态actionForm),只需要通过在struts-config.xml文件配置一下即可,DynaActionForm可以获得标准actionForm的所有功能。一个好例子比说千言万语好用,那就例子伺候:

 

       form-bean的name属性的值是可以随便写的跟以前一样,只不过type属性不能像以前标准actionForm那样直接写它的类就行,而应该写DynaActionForm的类,但是这个类的在哪呢,打开struts.jar下的org.apache.struts.action找到DynaActionForm.class

        type属性设置完后,既然DynaActionForm也是actionForm,它也要接收数据啊,如    <form-property name="username" type="java.lang.String"/> 这里的属性名要和表单的属性名一致,其中除了type属性外 还有initial属性,是给字段加初始值的,还有一个size属性,表示要接收数组的长度。

      DynaActionForm验证怎么做呢,一种做法就是继承DynaActionForm,当然也就是继承了actionForm,因为DynaActionForm是继承actionForm的,然后再覆写DynaActionForm的validate方法,然后把继承的类配置到struts-config.xml里,不过这样就失去DynaActionForm的意义啦,因为这样就会又写了一个子类为了实现validate。所以通常DynaActionForm都是采用动态验证框架的,这个在前面的博文已经介绍过啦,在这就不赘述了。

 

       好啦,配置完了,看看怎么用呢,action是必须有的,那就建立下,DynaActionFormTestAction.java如下

 

       那么如何取得DynaActionForm的值呢,很简单,由于DynaActionForm是继承actionForm的,所以方法一样,强制转换下DynaActionForm daf = (DynaActionForm)form;由于DynaActionForm类里面是通过一个HashmMap做数据收集的,所以在取数据的时候跟用HashmMap方法一样的啦,get(key)就行啦。

      接下来我们看看成功页面如何显示DynaActionForm返回的结果

 

     这样就大功告成了,好了 ,23点了 ,睡了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值