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

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

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

    §封Ja葬va§

    Struts2輸入校驗

    Struts2提供了客戶端校驗與服務端校驗。這里只是做個簡易的總結。

    1.)服務端校驗:
    當程序流程進入到Action類,并經歷了struts2的類型轉換階段后。接著進入struts2的輸入校驗階段。
    struts2的輸入校驗可自己編碼進行校驗,也可通過有規則命名的配置文件進行校驗。

    1.1)編碼校驗:

    在Action類里重寫父類的validate()方法即可。

    public void validate(){

        if(null == username || "".equals(username)){
       
            this.addFieldError("username","username should not be empty !");
           
        }else if(username.length() < 6 || username.length() > 12){
       
            this.addFieldError("username","username should be between 6 and 12 !");
           
        }

       

        if(null == password || "".equals(password )){
       
            this.addFieldError("password ","password should not be empty !");
           
        }else if(password .length() < 6 || password .length() > 12){
       
            this.addFieldError("password ","password should be between 6 and 12 !");
           
        }

    }

    在上面的validate方法中,一旦發現校驗失敗,就把失敗提示通過addFieldError方法添加到系統的fieldError中。校驗完畢后,若系統的fieldError不為空,則自動轉到input視圖對應的JSP頁面中輸出錯誤提示,這與類型轉換失敗后的處理是完全一樣的。

    為了在input視圖中對應的JSP頁面輸出錯誤提示,應該在該頁面中增加如下代碼:

    <!-- 輸入類型轉換失敗提示和校驗失敗提示 -->

    <s:fielderror/>

     
    這里不能忽略另外種情況:

    Struts2的Action類里可以包含多個處理邏輯,不同的處理邏輯對應不同的方法。即Struts2的Action類里定義了幾個類似于execute的方法,只是方法名不同。而重寫validate方法無法知道需要校驗的是哪個處理邏輯。實際上重寫validate方法會校驗所有的處理邏輯。

    為了校驗指定處理邏輯,需提供一個validateXxx()方法,其中xxx為Action對應的處理邏輯方法。

     
    例如Action類里有個login()邏輯方法,那么對應的校驗方法validateLogin()方法。

    但之后還是會調用validate()進行校驗,因此此時validate()沒必要寫了,或者讓validate()進行公共字段的校驗。

     
    1.2)配置文件校驗

    只需為Action指定一個校驗文件即可。

    在Action類所在的com.test.action包下建立LoginAction-validation.xml校驗文件(格式:Action類名-validation.xml).

    LoginAction-validation.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

    <validators>

       <field name="username">
         <field-validator type="requiredstring">
           <param name="trim">true</param>
           <message>username should not be empty !</message>
         </field-validator>
      
         <field-validator type="stringlength">
           <param name="minLength">6</param>
           <param name="maxLength">12</param>
           <message>username should be between ${minLength} and ${maxLength}!</message>
         </field-validator>
       </field>
      
       <field name="password">
         <field-validator type="requiredstring">
           <param name="trim">true</param>
           <message>password should not be empty !</message>
         </field-validator>
      
         <field-validator type="stringlength">
           <param name="minLength">6</param>
           <param name="maxLength">12</param>
           <message>password should be between ${minLength} and ${maxLength}!</message>
         </field-validator>
       </field>
          
    </validators>

    每個<field.../>元素指定一個Action屬性必須遵守的規則,該元素name屬性指定了被校驗的字段;如果該屬性滿足多個規則,則在該<field.../>下增多個<field-validator.../>。
    每個<field-validator .../>指定一個校驗規則,該元素的type屬性指定校驗器名稱該元素可以包含多個<param .../>子元素,用戶指定該校驗器的參數;除外,每個<field-validator .../>元素都有一個必須的<message .../>元素,用戶確定校驗失敗后的提示信息。

    例子中只采用了"必填字符串校驗器"和"字符串長度校驗器"2個校驗規則。

    struts2貌似共提供了13個校驗器:
    required:必填校驗器
    requiredstring:必填字符串校驗器
    int:整數校驗器
    double:雙精度浮點數校驗器
    date:日期校驗器
    expression:表達式校驗器
    fieldexpression:字段表達式校驗器
    email:電子郵件校驗器
    url:網址校驗器
    visitor:Visitor校驗器
    conversion:轉換校驗器
    stringlength:字符串長度校驗器
    regex:正則表達式校驗器

    用法大部分雷同,用到的時候可自己google搜索。

     
    配置文件校驗肯定不輸給編碼校驗的,自然也提供了對應于具體業務邏輯的校驗規則文件的格式:

    <Action類名-Action所包含的處理方法在struts.xml對應的name屬性-validation.xml>

    例:

    <!-- 配置一個名為user的Action,對應的邏輯方法為UserAction的login方法-->

    <action name="login" class="com.test.action.UserAction" method="login">
        <result name="input">/login.jsp</result>
        <result name="success">/index.jsp</result>
    </action>

    則此邏輯方法對應的校驗規則文件為:
    UserAction-login-validation.xml

    與編碼校驗一樣,校驗錯誤信息會添加到系統的fieldError中,校驗完畢后若FieldError不為空。則進入到input視圖對應的JSP。在<fieldError/>處輸出錯誤提示。


    提醒:沒記錯的話。與編碼校驗不同的是校驗順序,配置文件校驗方式下,

    先UserAction-validation.xml,再UserAction-login-validation.xml,

    因此若是只針login()邏輯進行輸入校驗的話,那UserAction-validation.xml沒必要寫了,或讓其進行公共字段的校驗

    2)客戶端校驗

    增加客戶端校驗非常簡單,將輸入頁面的表單元素改為使用struts2標簽來生成表單,并且為該表單增加validate="true"屬性即可。 

     

    輸入校驗完畢后再進入到業務邏輯方法來調用具體業務方法(續--Struts2核心攔截器)。

    posted on 2009-03-05 10:31 §朱家二少§ 閱讀(1087) 評論(0)  編輯  收藏 所屬分類: Struts2


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


    網站導航:
     
    主站蜘蛛池模板: 99久久99这里只有免费的精品| 亚洲综合精品一二三区在线| 久久国产亚洲精品| 亚洲啪啪免费视频| 亚美影视免费在线观看| 午夜亚洲av永久无码精品| 亚洲专区先锋影音| 91青青国产在线观看免费| 97久久精品亚洲中文字幕无码 | 亚洲精品国产日韩无码AV永久免费网| 成人黄18免费视频| 亚洲av纯肉无码精品动漫| 亚洲国产成人久久综合野外| 亚洲国产午夜电影在线入口| 免费99精品国产自在现线| 亚洲av片不卡无码久久| 免费黄网在线观看| 黄网站在线播放视频免费观看| 亚洲日韩在线第一页| 免费的全黄一级录像带| 亚洲综合激情视频| 精品免费国产一区二区三区| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 99热免费在线观看| 久久精品国产亚洲AV久| 国产精品视_精品国产免费 | 青青草无码免费一二三区| 亚洲一卡二卡三卡| www.亚洲精品| 51精品视频免费国产专区| 亚洲国产精品ⅴa在线观看| 亚洲精品乱码久久久久久蜜桃| 一级毛片成人免费看免费不卡| 国产成人精品日本亚洲专区6| 国产精品免费_区二区三区观看| 国产黄在线观看免费观看不卡| 亚洲精品综合久久中文字幕| 国产又大又长又粗又硬的免费视频| 精品国产福利尤物免费| 亚洲国产精品一区二区久| 亚洲Av无码乱码在线观看性色 |