MyEclipse 6.0 GA for eclipse 3.3已經(jīng)正式發(fā)布了,但還不支持struts2。我還是先用著5.5GA吧。
struts1里面的ActionForm有分ActionForm和DynaActionForm,如果需要使用Validator的話,也有分為ValidatorForm,ValidatorActionForm,DynaValidatorForm,DynaValidatorActionForm幾種。一般用得比較多的是Dyna的Form,而其中又以Validator使用較為普遍。我都試過用,其中DynaValidatorForm和DynaValidatorActionForm比較容易混淆。
用簡單的話說,這2者寫法上的區(qū)別在于這3個地方:
1)struts-config.xml:ActionForm type應分別為org.apache.struts.validator.DynaValidatorForm和org.apache.struts.validator.DynaValidatorActionForm
2)Action里的分別使用為:DynaActionForm addLoginMemberForm = (DynaActionForm) form;和DynaValidatorActionForm addOrdersForm = (DynaValidatorActionForm) form;
3)validation.xml里:DynaValidatorForm引用form的方法是如addLoginMemberForm,用名稱,而DynaValidatorActionForm是使用spring里注冊的action路徑:/addOrders
很多時候?qū)⒁粋€ActionForm公用到多個Action上(兩者通過name屬性來關(guān)聯(lián)),這時麻煩出來了.由于不同業(yè)務處理對數(shù)據(jù)的有效性驗證的要求略有不同,這對處理數(shù)據(jù)驗證的validator框架提供了一個要求----如何根據(jù)不同的業(yè)務請求,對同一個ActionForm進行不同的數(shù)據(jù)驗證了?
使用DynaValidatorActionForm,校驗是根據(jù)action元素的path屬性值來區(qū)分FormBean,而action元素的path屬性值正是不同action區(qū)分的唯一標記,這樣根據(jù)不同的action我們對同一個ActionForm給出不同的驗證規(guī)則了。