<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

     

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

     

     

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

     

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

     

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

     

         很多和我一樣的初學者可能手邊都有一般李剛寫的 《Struts 2 權威指南》,里面正好講了visitor校驗器,但是我照著書上講的步驟重復做了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參數可以隨便設置,只要保持一致就可以了)

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


    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參數將作為驗證User類屬性的文件名的一部分,如user屬性返回一個User對象,那么用于驗證User對象屬性的文件名為User-abc-validation.xml

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

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



     

     



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

     

     

     

     

     

     

     

     



     

    posted on 2009-01-04 16:49 cometlj 閱讀(1923) 評論(2)  編輯  收藏

    FeedBack:
    # re: 關于Struts2中visitor校驗器的解決方法
    2009-01-05 22:04 | Jarvis
    飄過。。。  回復  更多評論
      
    # re: 關于Struts2中visitor校驗器的解決方法
    2009-02-18 00:13 | 李猛
    能寫一個帶有<s:datetimepicker/>標簽做校驗的例子嗎??
    XxAction也是從ActionSupport做的繼承,如果能校驗成功,發給我感謝萬分?我的郵箱是:
    limengzzzz@yahoo.com.cn
    謝謝!  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 毛片亚洲AV无码精品国产午夜| 久久久久亚洲AV无码观看 | 日韩免费一区二区三区在线| 久久亚洲精品中文字幕三区| a级片免费观看视频| 亚洲精品国产精品乱码不99| 丝瓜app免费下载网址进入ios| 亚洲精品乱码久久久久久久久久久久| 亚洲黄片手机免费观看| 亚洲精品无码久久千人斩| 免费一级毛片在线播放视频| 亚洲一区二区三区高清视频| 黄色成人免费网站| 中文日韩亚洲欧美制服| 日韩成全视频观看免费观看高清| 国产亚洲欧美在线观看| 亚洲欧洲中文日韩久久AV乱码| 中文字幕视频在线免费观看| 亚洲av无码国产精品色午夜字幕 | www.999精品视频观看免费| 亚洲一区二区三区在线观看网站| 日韩一级视频免费观看| 一个人看的免费视频www在线高清动漫 | 亚洲电影免费观看| 成年轻人网站色免费看| 国产精品观看在线亚洲人成网| 亚洲中文字幕无码爆乳av中文| 久久久久久久岛国免费播放| 亚洲国产综合精品| 免费**毛片在线播放直播| 波霸在线精品视频免费观看| 亚洲蜜芽在线精品一区| 毛片大全免费观看| 狠狠躁狠狠爱免费视频无码| 亚洲精品国产肉丝袜久久| 国产无遮挡色视频免费视频| 久久99精品免费视频| 亚洲AV无码乱码在线观看代蜜桃| 亚洲国产成人久久精品99| 香港a毛片免费观看| 亚洲aⅴ无码专区在线观看春色|