V天使之翼V
          多學(xué),多用,技術(shù)才能長進
          posts - 1,comments - 2,trackbacks - 0
          這段時間重新開始拾起JAVA的學(xué)習(xí),也是為了以后的工作打算,積累一些經(jīng)驗。

           

             記得開始的時候,學(xué)習(xí)Struts2中的輸入校驗,就對Vistor校驗器情有獨鐘。首先,一般我們在提交表單的時候,對表單的各字段就要有校驗的過程,實際部署過程中要分 客戶端校驗 和服務(wù)器端校驗。 客戶端校驗使用rapid validation等第三方客戶端校驗框架就可以實現(xiàn),而且比Struts2本身自帶的客戶端校驗方式更好,但服務(wù)器端校驗卻可以分為好幾種:

           

           

          1.如果在Action中只有一個處理邏輯的話,可以重寫ActionSupport中的validate()方法。

           

          2.如果在Action中存在多個類似于execute的處理邏輯的話,我們可以重寫validateXxx()方法(Xxx為不同的處理邏輯名稱,例如有validateRegist()方法,就是處理Regist業(yè)務(wù)邏輯)

           

          3.編寫對應(yīng)于Action的validate 的xml文件。這個應(yīng)該是最為常用的一種解決方案了,但是有一個問題,Action眾多,或者在Action中有多個對應(yīng)一個或多個POJO的處理邏輯,那么這些xml文件就會隨著Action文件和處理邏輯的增加而相應(yīng)的增加,這顯然不是個好的現(xiàn)象。  所以如果只是針對POJO來寫相應(yīng)的validate xml文件,無疑會好很多。  這就是Visitor校驗器的功用了。

           

               很多和我一樣的初學(xué)者可能手邊都有一般李剛寫的 《Struts 2 權(quán)威指南》,里面正好講了visitor校驗器,但是我照著書上講的步驟重復(fù)做了N次都沒有正確,于是乎在網(wǎng)上搜索了相關(guān)的文章,最后終于發(fā)現(xiàn)書上沒有講完整  (P280-P281)

           

          以下我來舉個例子:

           

            我建立了一個User的POJO,處理邏輯為UserAction, 測試頁面為login.jsp

          login.jsp

           1 <%@ page language="java" pageEncoding="UTF-8"%>
           2 <%@ taglib prefix="s" uri="/struts-tags"%>
           3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
           4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
           5 <html xmlns="http://www.w3.org/1999/xhtml">
           6     <head>
           7         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
           8         <title>用戶登錄頁面</title>
           9         <link href="utils/css/public.css" type="text/css" rel="stylesheet" />                
          10     </head>
          11     <body>        
          12     <div id="all">
          13         <div id="header">header</div>
          14         <div id="content">
          15         <s:form action="pro_login.do">
          16             <s:textfield name="user.username" label="用戶名稱" />
          17             <s:password name="user.userpwd" label="登錄密碼" />
          18             <s:submit value="登 錄" />
          19         </s:form>    
          20         </div>
          21         <div id="footer">footer</div>
          22     </div>            
          23     </body>
          24 </html>

          那么我的Visitor校驗器為
          UserAction-validation.xml

           1 <?xml version="1.0" encoding="UTF-8"?>
           2 <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
           3 <validators>    
           4     <field name="user">
           5         <field-validator type="visitor">
           6             <param name="context">userContext</param>
           7             <param name="appendPrefix">true</param>
           8             <message></message>
           9         </field-validator>
          10     </field>
          11 </validators>

           

           -------------------------------------------------------------------

          (注:context參數(shù)可以隨便設(shè)置,只要保持一致就可以了)

           -------------------------------------------------------------------


          User-userContext-validation.xml

           1 <?xml version="1.0" encoding="UTF-8"?>
           2 <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
           3  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
           4 <validators>
           5     <field name="username">
           6         <field-validator type="requiredstring">
           7             <message>請輸入用戶名稱</message>
           8         </field-validator>
           9     </field>
          10     <field name="userpwd">
          11         <field-validator type="requiredstring">
          12             <message>請輸入密碼</message>
          13         </field-validator>        
          14     </field>       
          15 </validators>
          16 



          其中context參數(shù)將作為驗證User類屬性的文件名的一部分,如user屬性返回一個User對象,那么用于驗證User對象屬性的文件名為User-abc-validation.xml

                這個文件要和User.class文件在同一個目錄中。也就是要放到你的POJO文件相同的目錄路徑下,不然的話Visitor校驗器就不會起作用。

               這個就是李剛老師沒有寫全的地方,附加個項目截圖就更為清楚了。



           

           



           這樣的話,Visitor校驗器就起作用了。

           

           

           

           

           

           

           

           





           

          posted on 2009-01-04 16:43 cometlj 閱讀(155) 評論(0)  編輯  收藏 所屬分類: 技術(shù)文章

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 安国市| 民权县| 深圳市| 石景山区| 营口市| 辽源市| 秦皇岛市| 阆中市| 鄂托克旗| 华池县| 兰西县| 中卫市| 双辽市| 德江县| 霍邱县| 墨脱县| 峨山| 阿拉善左旗| 周宁县| 望城县| 炉霍县| 鲁甸县| 昂仁县| 威远县| 旌德县| 永泰县| 刚察县| 新源县| 大姚县| 荣成市| 太仓市| 太谷县| 达日县| 南阳市| 闸北区| 南雄市| 报价| 抚州市| 渭源县| 新民市| 扶沟县|