作者:Flyingis
ActionForm
是Struts設計中比較有爭議的一個概念,在某些情況下也許不會使用到ActionForm,具體可以參照《Struts Action的多種角色》一文。盡管如此,ActionForm在許多應用的開發中都實現了重要的功能,它是Struts框架提供的DTO,用于在視圖層和控制層之間傳遞HTML表單數據,控制層可以從ActionForm Bean中讀取用戶輸入的表單數據,也可以把來自模型層的數據存放到ActionForm Bean中,返回給視圖,即使用它的主要目的是字段采集、類型轉換器、以及傳輸對象等。對于ActionForm Bean在MVC中所處層次結構的理解,可以參考《剖析MVC中的各種Object》。
ActionForm
的基本功能
1.
字段采集
在Web應用程序開發過程中,數據的采集是最基本的一個環節,而html定義的數據輸入控件和http定義的數據傳輸協議非常簡單,因此在Struts中設計了ActionForm來彌補這種不足。Struts對http參數處理的方法是將輸入參數傳遞到JavaBean屬性來進行處理,當ActionForm的屬性與某個請求參數匹配,框架自動以參數的值設置屬性。
2.
數據校驗器
Html
沒有在數據提交之前對數據進行校驗的能力,使用javascript可以做到這些,優點在于可以減輕服務器負擔,但javascript經常會被瀏覽器禁止,因此,在Struts中ActionForm實現了部分數據校驗的功能,當輸入數據不符合要求時,頁面將被返回到數據數據頁面,要求用戶重新輸入。一般情況下,ActionForm屬性定義為String類型,以便對各種輸入進行捕獲。另外,還可以用ActionForm和Action對輸入數據進行雙重校驗,ActionForm校驗數據類型是否正確,Action校驗該數據是否滿足業務層的其他要求。
3.
類型轉換
HTML
表單中的數據類型一般是String或boolean類型,通過在ActionForm Bean中實現Helper方法,可以實現屬性類型的轉換。
4.
傳輸對象
ActionForm
可以作為其他Bean的數據載體,它裝載的數據通常對應著持久層中的不止一個實體。