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

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

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

    軟件是對質量的不懈追求

    struts2輸入驗證--補充(轉)

    原文地址:http://blog.csdn.net/ForWayfarer/archive/2008/09/20/2955812.aspx

    1.struts2怎么實現方法簽名(類似于struts1的DispatchAction):在strust.xml中配置如下
    <action ... method="register" ></action>
    <action ... method="login" ></action>
    <action ... method="insert" ></action>

    (1)struts2怎么實現分發驗證:對應于每個方法簽名,可以有相應的validate()方法如下
    public void validateRegister()
    public void validateLogin()
    public void validateInsert()

    (2)struts2怎么實現分發驗證:對應于每個方法簽名,可以有相應的驗證框架如下
    UserAction-register-validation.xml
    UserAction-login-validation.xml
    UserAction-insert-validation.xml

    2.驗證順序

    在struts1中,如果在FormBean中覆蓋了validate()方法,讓其放回null值,則驗證框架(xml驗證)就會失效。返回 null則代表驗證通過or無需驗證;覆蓋的validate()方法如果返回super.validate(mapping,request)即調用父 類的validate(mapping,request),驗證框架才會起作用。也就是說,如果想讓驗證框架有效,則不要覆蓋validate()方法, 如果除了驗證框架驗證,你還想在validate()方法中添加一些其他驗證,可以覆蓋validate()方法,但返回值須為 super.validate(mapping,request)。

    在struts2中類似。struts2的執行順序為:

    (1). 首先Struts2對客戶端傳來的數據進行類型轉換;

    (2). 類型轉換完畢后再進行輸入校驗,順序:UserAction-validation.xml --> UserAction-login-validation.xml --> public void validateLogin(){} --> public void validate(){};

    (3). 如果類型轉換和輸入校驗都沒有錯誤發生,那么進入login()方法/execuet()方法(調用商業邏輯).

    注意:如果類型轉換不成功,也同樣要進行輸入校驗,所以錯誤信息打印會將二者的錯誤信息全部打印出來

    3.struts2的錯誤信息

    struts2有兩種錯誤級別:addFieldError和addActionError

    addActionError(String anErrorMessage) -- Add an Action-level error message to this Action:看源代碼對于Action級別的錯誤信息,實際上是放置在ArrayList中的,action級別的error不會在表單中顯示。

    addFieldError(String fieldName, String errorMessage) --  Add an error message for a given field:看源代碼真正存放field級別錯誤信息的對象是LinkedHashMap,該LinkedHashMap的key是String類型 的,value是ArrayList類型的(addFielderror(String, ArrayList)),實際上是:LinkedHashMap<String, ArrayList<String>> errors。field級別的error會在表單中顯示。

    源代碼中還有這樣一個方法:public boolean hasErrors() { if (hasActionErrors() || hasFieldErrors()) ...} 則返回input頁面,表示不論是field級別的還是action級別的,只要錯誤容器不為空,就返回 到input頁面。

    另外:struts2驗證框架(xml驗證)是將錯誤保存在fielderror中的,而不是actionerror。所以在jsp顯示錯誤時要注意。

    4.struts2支持客戶端驗證,s標簽依然支持js事件,所以客戶端驗證推薦自己寫js,不過基本不用struts做客戶端驗證。此外,s標簽即使你不給其設置id屬性,s標簽也會自動生成一個id(通過查看頁面源代碼(獲得s標簽的html代碼)可獲得),如果你自定義了id,則會將s標簽自動生成的id覆蓋。


    posted on 2009-06-17 09:40 BlakeSu 閱讀(1177) 評論(3)  編輯  收藏

    評論

    # dd[未登錄] 2014-11-05 18:28 dd

    sdfasdfasdfas afaffsadf  回復  更多評論   

    # 文章不錯 2014-11-05 18:30 小王

    這篇文章寫的還不錯哦  回復  更多評論   

    # 22 2014-11-05 18:31 2

    @小王
    呵呵  回復  更多評論   


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


    網站導航:
     
    主站蜘蛛池模板: 久久影视国产亚洲| 亚洲性猛交XXXX| rh男男车车的车车免费网站| 亚洲日本中文字幕一区二区三区| 一区二区视频免费观看| 亚洲AV无码专区亚洲AV伊甸园| 亚洲一级毛片免费观看| 亚洲精品动漫免费二区| 亚洲精品无码MV在线观看| 16女性下面扒开无遮挡免费| 亚洲avav天堂av在线网毛片| 久久乐国产精品亚洲综合| 国产免费女女脚奴视频网| 色屁屁在线观看视频免费| 亚洲一卡2卡三卡4卡有限公司| 成人午夜大片免费7777| 三级黄色免费观看| 亚洲高清毛片一区二区| 91精品国产亚洲爽啪在线影院| 国产免费观看黄AV片| www视频免费看| 成人免费av一区二区三区| 亚洲精品国产第一综合99久久| 亚洲国产精品婷婷久久| MM131亚洲国产美女久久 | 一二三四视频在线观看中文版免费| 一级做a爰片久久毛片免费陪 | 中文字幕在线日亚洲9| 亚洲AV无码一区二区乱孑伦AS| 国产一区二区三区在线免费观看 | 亚洲三级在线播放| 亚洲成色999久久网站| 亚洲精品成人片在线观看| 国产美女在线精品免费观看| 久久99精品国产免费观看| 一级毛片免费一级直接观看| 国产精品亚洲一区二区三区在线观看 | 男人的天堂网免费网站| 男人天堂免费视频| 中文字幕无码免费久久9一区9| 日韩免费码中文在线观看|