首页 > 代码库 > struts1——静态ActionForm与动态ActionForm

struts1——静态ActionForm与动态ActionForm



      在struts1中,我们能够使用ActionForm来获取从client端提交上来的数据。并通过action配置中的name属性。将某个ActionForm配置到某次请求应答的Action中。作为本次请求应答的传输数据介质,ps,事实上还是側重于数据在client的获取。由于赋值部分框架帮我们做好了。


          对于ActionForm的使用。我们有两种方式:一是通过建立类的方式,二是直接写入配置文件的方式。



一,静态ActionForm的使用


            首先我们须要定义类。注意这个类要继承ActionForm类:


技术分享

       定义好类之后。将我们要获取的client数据作为成员变量写入类中,确保get后面的名称首字母小写后,与我们client提交的数据的name名称一致。


       之后。在struts的配置文件里配置此类:


技术分享


    为了关联ActionForm与Action关系。还须要在Action的name配置中,指明此Action使用的是哪个form-bean:


 技术分享


 在Action中获取request中的数据,仅仅需强转成我们定义的ActionForm类就可以:

技术分享




二。动态ActionForm使用


         假设我们系统比較大的话,试想一下。我们要为每个Action配置一个ActionForm类来实现数据的传递,这种话,ActionForm就比較多。

这时候。我们能够使用动态ActionForm将ActionForm配置在配置文件里.


        技术分享


      动态ActionForm的type都要配置成 :   type="org.apache.struts.action.DynaActionForm" ,将类的property指明类型之后配置到form-property中。


   服务端取值:


      技术分享


      动态ActionForm的值都存储到一个map中,key-value形式,key为我们配置文件里的form-property的name的值。得到value之后进行强转。


  表现层取值:


技术分享




三,静态ActionForm跟动态ActionForm的比較


1,两种ActionForm都能实现同样的功能:比方数据验证。reset数据。

2,使用类的方式缺点是项目大的话。类较多,每次添加,都要又一次编译;可是Action中取值简单;

3,使用动态ActionForm省去了类,仅仅需在配置文件里配置,方便改动,缺点是取值不方便。map里面get的时候,假设key指明的不对,easy出错。











struts1——静态ActionForm与动态ActionForm