1. 程式人生 > >struts1——靜態ActionForm與動態ActionForm

struts1——靜態ActionForm與動態ActionForm

mpp fas yarn prop dsd nqa oar bnf npc



在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