首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts Validator 表單驗證框架完整配置指南

     編輯:Java 相關知識

前言

Struts Validator 框架提供聲明式表單驗證,支援伺服端與客戶端(JavaScript)雙模式。本文詳細說明啟用步驟、兩大配置文件(validator-rules.xml、validation.xml)、14 種內建驗證器用法、FormBean 撰寫規則、struts-config.xml 配置,以及 JSP 頁面錯誤訊息顯示技巧。

啟用 Validator 外掛


<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames"
        value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>

或在 JBuilder 專案屬性勾選 Struts Validation 節點自動生成。

validator-rules.xml:驗證器定義

定義每個驗證器的邏輯類別、JavaScript 代碼、錯誤訊息鍵值。Struts 內建 14 種:

  • Required:非空
  • Requiredif:條件非空
  • MinLength / MaxLength:長度範圍
  • Mask:正則表達式
  • Byte / Short / Integer / Long / Float / Double:數值型別與範圍
  • Date:日期格式
  • Range / IntRange / FloatRange:數值區間
  • CreditCard:信用卡號 Luhn 演算法
  • Email:電子郵件格式

可自行開發自訂驗證器(如密碼一致性)。

validation.xml:表單欄位驗證規則

結構


<form-validation>
  <formset>
    <form name="logonForm"> <!-- 對應 struts-config.xml form-bean name -->
      <field property="username" depends="required,minlength">
        <msg name="required" key="errors.required"/>
        <msg name="minlength" key="errors.minlength"/>
        <arg0 key="prompt.username"/> <!-- {0} -->
        <arg1 name="minlength" key="${var:minlength}" resource="false"/> <!-- {1} -->
        <var><var-name>minlength</var-name><var-value>6</var-value></var>
      </field>
      <field property="password" depends="required,mask">
        <msg name="mask" key="errors.invalid"/>
        <arg0 key="prompt.password"/>
        <var><var-name>mask</var-name><var-value>^[a-zA-Z0-9]{6,12}$</var-value></var>
      </field>
      <field property="confirmPassword" depends="required">
        <msg name="required" key="errors.required"/>
        <arg0 key="prompt.confirmPassword"/>
      </field>
    </form>
  </formset>
</form-validation>

關鍵元素

  • <form name="...">:對應 struts-config.xml 中 <form-bean name="...">。
  • <field property="..." depends="v1,v2">:欄位名稱、依賴驗證器(逗號分隔)。
  • <msg name="validator" key="..."/>:驗證失敗訊息鍵(對應 ApplicationResources.properties)。
  • <arg0>、<arg1>:訊息參數 {0}、{1},resource="false" 表示直接取值而非資源鍵。
  • <var>:驗證器參數(如 minlength、mask、min/max)。

常用驗證器配置範例

驗證器depends 值必要參數範例
Requiredrequired-<field property="email" depends="required">...
Maskmaskmask (regex)<var><var-name>mask</var-name><var-value>^\d+$</var-value></var>
Rangerangemin, max<var><var-name>min</var-name><var-value>1</var-value></var> <var><var-name>max</var-name><var-value>100</var-value></var>
MaxLengthmaxlengthmaxlength<var><var-name>maxlength</var-name><var-value>20</var-value></var>
MinLengthminlengthminlength同上
Emailemail-<field property="email" depends="required,email">...

FormBean 撰寫規則

  • 必須繼承 ValidatorForm 或 ValidatorActionForm(不可繼承 ActionForm)。
  • ValidatorForm:依 struts-config.xml <action name="logonForm"> 的 name 屬性匹配 validation.xml <form name="logonForm">。
  • ValidatorActionForm:依 <action path="/logon"> 的 path 屬性匹配(需去掉斜線)。

struts-config.xml Action 配置


<action path="/logon"
        type="com.example.LogonAction"
        name="logonForm"
        scope="request"
        input="/logon.jsp" <!-- 驗證失敗導向頁面 -->
        validate="true" > <!-- 必須為 true 啟用自動驗證 -->
    <forward name="success" path="/welcome.jsp"/>
    <forward name="failure" path="/error.jsp"/>
</action>

JSP 頁面錯誤訊息顯示

伺服端驗證(預設)


<logic:messagesPresent>
  <bean:message key="errors.header"/>
  <html:messages id="error">
    <li><bean:write name="error"/></li>
  </html:messages>
</logic:messagesPresent>

客戶端 JavaScript 驗證

  1. Form 標籤加入 onsubmit:
    <html:form action="/logon.do" onsubmit="return validateLogonForm(this);">
    規則:return validate + 首字大寫 FormBean name + Form(this)。
  2. 頁面末尾引入自動生成 JS:
    <html:javascript formName="logonForm" staticJavascript="true"/>
    formName 需與 struts-config.xml 完全一致(含大小寫)。
  3. staticJavascript="true" 使用 JS 驗證,false 則伺服端驗證。

ApplicationResources.properties 訊息範例


errors.header=
  • 請修正以下錯誤:
  • errors.required={0} 不能為空。 errors.minlength={0} 長度不能小於 {1} 字元。 errors.maxlength={0} 長度不能大於 {1} 字元。 errors.invalid={0} 格式不正確。 errors.range={0} 必須在 {1} 到 {2} 之間。 prompt.username=使用者帳號 prompt.password=密碼 prompt.confirmPassword=確認密碼

    結語

    Struts Validator 將驗證邏輯外部化為 XML 配置,實現「零程式碼」驗證,支援伺服端/客戶端雙模式無縫切換。掌握 validator-rules.xml 擴充自訂驗證器、validation.xml 靈活組合規則、ValidatorForm 與 Action 正確綁定,即可構建健壯且易維護的表單驗證體系。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved