關於struts2驗證檔案的些寫法和fieldexpression

來源:互聯網
上載者:User

本人很久前學struts2時遇到些問題,希望寫出來對大家有所協助。struts2的校正架構既支援伺服器端也支援客服端的校正,但更多是用在伺服器端(客服端支援太弱)
<?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>
<!-- 驗證的兩種方式 -->
    <!-- <validator type="requiredstring">
        <param name="fieldName">username</param>
        <message>使用者名稱不可為空</message>
    </validator>
    <validator type="stringlength">
    <param name="fieldName">username</param>
    <param name="minLength">3</param>
    <param name="maxLength">8</param>
    <message>使用者名稱必須在${minLength}和${maxLength}之間</message>
    </validator>-->
    <!-- fiel表示驗證欄位層級,和上面的可以同時存在 -->
    <field name="username">
        <field-validator type="requiredstring" short-circuit="true">
            <param name="trim">true</param>
            <message>使用者名稱必須填</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">6</param>
            <param name="maxLength">10</param>
            <message>使用者名稱必須在${minLength}和${maxLength}之間</message>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message>密碼必填</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">6</param>
            <param name="maxLength">10</param>
            <message>密碼必須在${minLength}和${maxLength}之間</message>
        </field-validator>
    </field>
    <field name="re_password">
        <field-validator type="requiredstring">
            <message>重複密碼必填</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">6</param>
            <param name="maxLength">10</param>
            <message>密碼必須在${minLength}和${maxLength}之間</message>
        </field-validator>
        <field-validator type="fieldexpression">
        <param name="expression">(re_password eq password)</param>
        <message>兩次密碼不一致</message>
        </field-validator>
    </field>
    <field name="age">
        <field-validator type="required">
            <message>年齡必填</message>
        </field-validator>
        <field-validator type="int">
            <param name="min">1</param>
            <param name="max">100</param>
            <message>年齡必須在${min}和${max}之間</message>
        </field-validator>
    </field>
    <field name="graduation">
        <field-validator type="required">
            <message>畢業時間必填</message>
        </field-validator>
        <field-validator type="date">
            <param name="min">1987-01-01</param>
            <param name="max">2007-01-01</param>
            <message>生日必須在${min}和${max}之間</message>
        </field-validator>
        <field-validator type="fieldexpression">
        <param name="expression">(graduation >birthday)</param>
        <message>畢業時間不能大於出生時間</message>
        </field-validator>
    </field>
</validators>
1.我們在寫校正檔案時最好根據它定義的DTD檔案和提供的原始碼進行編碼,可以找到default.xml檔案。他裡面列出了相應的校正方式和對應的類。在用fieldexpression這種類型來校正時表示驗證的是個運算式語言,其實是OGNL語言。下面的  <param name="expression">(graduation >birthday)</param>就說明了此道理。expression也說明你用的是運算式校正。
2.有時我們雖然定義了驗證檔案,但是有些方法不想讓它校正可以用@SkipValidation的註解方式跳過驗證(不過此註解卻對action裡定義的驗證跳不過)。
3.如果一個action定義了多個方法,校正檔案用該:XXXAction-配置的action名字-validation.xml的方式。當時第一次比較暈,把第二節配成想要調用的方法,結果老是解析不了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.