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