struts1——靜態ActionForm與動態ActionForm
在struts1中,我們可以使用ActionForm來擷取從client端提交上來的資料,並通過action配置中的name屬性,將某個ActionForm配置到某次請求應答的Action中,作為本次請求應答的資料轉送介質,ps,其實還是側重於資料在用戶端的擷取,因為賦值部分架構幫我們做好了。
對於ActionForm的使用,我們有兩種方式:一是通過建立類的方式,二是直接寫入設定檔的方式。
一,靜態ActionForm的使用
首先我們需要定義類,注意這個類要繼承ActionForm類:
定義好類之後,將我們要擷取的用戶端資料作為成員變數寫入類中,確保get後面的名稱首字母小寫後,與我們用戶端提交的資料的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指明的不正確,容易出錯。