DynaActionForm
DynaActionForm提供了一種方便的機制
從根本上消除了編寫ActionForm的需要
DynaActionForm可允許動態的表單屬性
這意味著你能夠在你的struts
config
xml文件中定義屬性並且將表單類型設置為org
apache
struts
action
DynaActionForm
什麼都不需要寫
DynaActionForm使用Apache公共項目中的DynaBean完成這些操作
這一動態的行為是通過反射(reflection)與哈希圖(Hashmaps)提供的
DynaActionForm是在struts
config
xml文件中使用
與標記定義的如下所示
動態表單的屬性與標准的ActionForm的屬性類似屬性name是用於索引Action中的表單bean並且type用於指定實例化的類當使用類DynaActionForm時的動態屬性自動默認為真(true)對於DynaActionForm要用元素指定表單的所有屬性元素中的name是指屬性名稱type是指bean屬性用Java的實現類的類名如果這個屬性是索引類型的可在type後添加[ ]在上表中你應該注意最後一個屬性genre的定義我們設置了初始值(或叫 默認值)為Dance這個值也會在DynaActionForm中reset()方法被調用時被作為默認值設置並允許在表單中設置默認值的機制如果在initial屬性中沒有指定任何值那麼所有原始類型的初值被設置為如果是對象則初值為null(空)
使用DynaActionForm非常方便主要的一個好處就是你只需寫非常少的代碼就像其他表單一樣前面的代碼例子是使用表單所需的全部代碼需要知道的一件事就是驗證當使用DynaActionForm時假定在某處進行了驗證處理這與ActionForm有些不同你可以在自己的Action中實現驗證但這是一個更好的方法
進行驗證可用DynaValidatorForm或者DynaValidatorActionForm這兩個類都在orgapachestrutsvalidator package包中通過擴展DynaActionForm可以得到基於XML文件的基本值域的驗證驗證是基於輸入驗證器的keyKey是來自於strutsconfigxml文件的name屬性它應當與validationxml文件中的表單元素的name屬性匹配
多應用支持
在Struts 中可以定義和支持多重的子應用這意味著你能將你的應用放在更易維護的子應用中你不再需要在唯一的strutsconfigxml文件之外檢測來源控制
另一個使用子應用的原因是根據客戶而改變的控制流在某些應用中你可能有一些通用的頁面但是控制流也許會由於登陸應用的客戶的不同而有所改變你能把這個控制流的元數據存入數據庫並生成webxml文件(或該文件中的一部分)與不同的strutsconfigxml文件一起
如果你曾對Struts x進行過開發你可能注意到了許多webxml文件中的元素已經移到了Struts 的strutsconfigxml文件中這是因為現在他們是應用特定(applicationspecific)的多重的子應用通過在請求URI的相對於上下文部分開始的前綴來確定如果沒有應用前綴能夠匹配則選擇默認配置默認設置擁有一個空字符串的前綴執行默認設置的這種方式對可能只定義一個應用的Struts x是向後兼容的
如果你擁有一個包含不同功能模塊的大型應用那麼用協同運行的子應用代替一個巨大的應用會更有意義下面所示的文件webxml顯示了如何定義子應用
config
/WEBINF/strutsconfigxml
config/catalog
/WEBINF/strutsconfigcatalogxml
config/sorter
/WEBINF/strutsconfigsorterxml
當使用子應用時你可能定義上下文相關的請求URI來指定使用哪一個子應用例如對表單的動作可能如下所示
引用了默認的子應用或
引用catalog子應用的動作類實際上你不必這麼做你可以在catalog子應用中用/listCds如果你想這麼做基本規則是所有在版本中上下文相關的strutsconfigxml參數現在在版本中是子應用前綴相關的這樣在沒有修改的情況下一個單一的應用既可以作為默認子應用也可作為指定的子應用
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27987.html