Flyingis

          Talking and thinking freely !
          Flying in the world of GIS !
          隨筆 - 156, 文章 - 16, 評(píng)論 - 589, 引用 - 0
          數(shù)據(jù)加載中……

          重溫Struts--Validator和Tiles

          作者:Flyingis

          今天要回顧的是ValidatorTiles以及簡(jiǎn)單的Plugin實(shí)現(xiàn),剛剛登錄blogjava就發(fā)現(xiàn)Mustang已經(jīng)發(fā)了兩篇好文《在Struts中使用Validator實(shí)現(xiàn)可配置的信息校驗(yàn)() ()》,本文則從實(shí)現(xiàn)流程來總結(jié)Validator的使用方法,并針對(duì)ValidatorTilesStruts PlugIn插件略談一些個(gè)人心得。

          Validator

          在使用ActionForm時(shí),將數(shù)據(jù)的驗(yàn)證工作放在validator()方法中雖說是一個(gè)可行的方法,但在ActionForm中編寫特定的驗(yàn)證邏輯會(huì)降低ActionForm的重用性,并給系統(tǒng)的維護(hù)帶來麻煩。Validator框架可以將驗(yàn)證邏輯移至ActionForm之外,實(shí)現(xiàn)Javascript客戶端驗(yàn)證或服務(wù)器段驗(yàn)證。具體實(shí)現(xiàn)Validator驗(yàn)證步驟如下:

          1.        Validator是以plugin的方式來擴(kuò)充ActionServlet功能的,需要在Struts-config.xml中聲明這個(gè)plugin

          2.        導(dǎo)入Validator中的資源信息,用來向用戶提示驗(yàn)證中出現(xiàn)的異常消息。Validator可以支持國(guó)際化信息,為每一個(gè)國(guó)際化信息提供對(duì)應(yīng)的資源信息。

          3.        利用validaton.xml文件來定義用戶需要驗(yàn)證的每一個(gè)JSP表單中的每一個(gè)字段的驗(yàn)證規(guī)則,其中可以利用validator-rules.xml中已經(jīng)設(shè)計(jì)好了的驗(yàn)證器,也可以自定義驗(yàn)證方式。

          4.        客戶端驗(yàn)證需要validator-rules.xml中已提供的驗(yàn)證規(guī)則,或是自定義規(guī)則,然后在jsp頁面中聲明<html:form action=“/action.do” onsubmit=“return validateActionForm(this);”>,加上可以生成實(shí)現(xiàn)驗(yàn)證的Javascript代碼<html:javascript formName=“ActionForm” staticJavascript=“true”/>。服務(wù)器端驗(yàn)證同樣需要validator-rules.xml中已提供的驗(yàn)證規(guī)則,或是自定義規(guī)則,另外,實(shí)現(xiàn)驗(yàn)證的ActionForm需要是DynaActionForm的子類,和客戶端驗(yàn)證不同的是,在捕獲服務(wù)器端錯(cuò)誤消息時(shí),jsp頁面中需要嵌入代碼

          <html:messages id=“error”>

            <bean:write name=“error”/>

          </html:messages>

          在配置和設(shè)計(jì)Web系統(tǒng)驗(yàn)證功能的時(shí)候,需要注意的是要理解在validaton.xml中定義驗(yàn)證規(guī)則的時(shí)候每個(gè)參數(shù)的具體功能,我最初使用Validator的時(shí)候就因?yàn)閰?shù)混淆而驗(yàn)證失敗,費(fèi)了一點(diǎn)時(shí)間。還有就是自定義驗(yàn)證規(guī)則時(shí),需要注意每個(gè)參數(shù)的具體含義,例如在某種情況下,validaton.xml<var-name>myproperty</var-name>中自定義的屬性myproperty需要和自己編寫的驗(yàn)證器類中的代碼一致等等。

          Tiles

          Tiles是一個(gè)模板機(jī)制,它可以讓網(wǎng)頁的配置框架和內(nèi)容分離,提供一個(gè)版面管理機(jī)制。通常有兩種方式管理Tiles配置資源,一種使用XML,另一種使用JSP頁面直接管理。

          使用XML配置的Tiles可以支持國(guó)際化,例如可以另存為tiles-defs.xml并命名為tiles-defs_zh.xml,將encoding改為GB2312,這樣可以在配置中使用中文。使用XML配置文件可以方便的實(shí)現(xiàn)版面配置和內(nèi)容的分離,并且能擴(kuò)充某個(gè)定義,達(dá)到重新定義其中所管理頁面資源的目的。使用JSP頁面直接定義管理版面的配置資源更為簡(jiǎn)單和靈活,同樣可以和xml一樣重新定義網(wǎng)頁的地址。不使用JSP框架頁面而是直接在JSP頁面中使用配置頁面,可以不用額外去定義管理文件,但缺點(diǎn)是無法重用這個(gè)頁面定義的內(nèi)容。

          TilesCSS結(jié)合起來,基本上能滿足一般頁面控制的需要。

          PlugIn插件

          通過繼承ActionSerlvet,重寫它的init()方法,修改或增減它的初始化資源來達(dá)到改變ActionServlet功能的方法,這從軟件架構(gòu)角度上來講并不是一個(gè)好方法。Struts1.1之后,可以通過PlugIn接口來實(shí)現(xiàn)動(dòng)態(tài)增減ActionServlet功能的目的。ActionServlet加載后,會(huì)執(zhí)行實(shí)現(xiàn)PlugIn接口的類的init()方法,在ActionServlet終止前,執(zhí)行實(shí)現(xiàn)PlugIn接口的類的destroy()方法。ValidatorTiles就是利用這種方式來擴(kuò)充Struts功能的。

          寫到這里,感覺使用好ValidatorTilesPlugIn插件最重要的就是對(duì)配置元素的理解,和程序調(diào)用流程的掌握,了解到Struts的插件機(jī)制是如何運(yùn)轉(zhuǎn)的,以此來擴(kuò)充Web應(yīng)用程序的功能,提供更好的用戶體驗(yàn)。

          posted on 2006-03-08 14:52 Flyingis 閱讀(1990) 評(píng)論(2)  編輯  收藏 所屬分類: Web 框架與開發(fā)

          評(píng)論

          # re: 重溫Struts--Validator和Tiles  回復(fù)  更多評(píng)論   

          再新增一個(gè)struts config文件,且在這個(gè)config中使用validator,但是validator不被裝載,為什么?!!
          2006-05-17 11:20 | lj

          # re: 重溫Struts--Validator和Tiles  回復(fù)  更多評(píng)論   

          第一個(gè)config可以裝載validator,第二個(gè)不行?
          那你的config配置好了么?
          2006-05-17 11:48 | Flyingis
          主站蜘蛛池模板: 漯河市| 五台县| 策勒县| 永德县| 肇源县| 景泰县| 新丰县| 阿巴嘎旗| 潼南县| 娱乐| 扎赉特旗| 广德县| 芜湖县| 福清市| 农安县| 海宁市| 盘锦市| 同江市| 常州市| 虹口区| 兰西县| 吉隆县| 商水县| 镇雄县| 新安县| 抚顺县| 冕宁县| 江源县| 韶关市| 离岛区| 蓬溪县| 房产| 竹山县| 黎城县| 乐安县| 金堂县| 大理市| 疏勒县| 安平县| 三河市| 鞍山市|