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

Struts 1.x 系列教程(10):Validator 驗證框架入門與完整範例

     編輯:Java 相關知識

前言

Validator 框架是 Struts 官方外掛,以 XML 宣告驗證規則,取代在 ActionForm.validate() 撰寫程式碼。優點:維護集中、標準化、避免重複造輪子(如 Email 驗證)、支援客戶端/伺服端自動切換、可擴充自訂驗證器。

六步驟建立第一個 Validator 程式

步驟 1:FormBean 繼承 ValidatorForm

package actionform;
import org.apache.struts.validator.ValidatorForm;

public class FirstValidatorForm extends ValidatorForm {
    private String name, age, email;
    // getter/setter 略
}

關鍵:必須繼承 ValidatorForm(已覆寫 validate() 自動觸發 XML 驗證),而非 ActionForm。

步驟 2:建立空 Action 類別

package action;
public class ValidatorAction extends Action {
    public ActionForward execute(...) {
        response.setCharacterEncoding("GBK");
        response.getWriter().println("驗證成功!");
        return null;
    }
}

步驟 3:配置 struts-config.xml

<form-bean name="firstValidatorForm" type="actionform.FirstValidatorForm" />
<action name="firstValidatorForm" path="/firstValidator" scope="request"
        type="action.ValidatorAction" input="/firstValidator.jsp" />

步驟 4:JSP 頁面

<%@ taglib uri="https://struts.apache.org/tags-html" prefix="html" %>
<html:form action="firstValidator">
    姓名:<html:text property="name" /> <font color="red"><html:errors property="name"/></font><br>
    年齡:<html:text property="age" /> <font color="red"><html:errors property="age"/></font><br>
    Email:<html:text property="email" /> <font color="red"><html:errors property="email"/></font><br>
    <html:submit value="提交" />
</html:form>

<html:errors property="..."/> 顯示對應欄位錯誤。

步驟 5:配置 validator.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE form-validation PUBLIC
    "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
    "https://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
    <formset>
        <form name="firstValidatorForm">
            <field property="name" depends="required,maxlength,minlength,mask">
                <msg name="required" key="error.name.blank" />
                <msg name="minlength" key="error.name.minLength" />
                <msg name="maxlength" key="error.name.maxLength" />
                <msg name="mask" key="error.name.alphanum" />
                <arg name="minlength" key="${var:minlength}" position="0" resource="false" />
                <arg name="maxlength" key="${var:maxlength}" position="0" resource="false" />
                <var><var-name>minlength</var-name><var-value>5</var-value></var>
                <var><var-name>maxlength</var-name><var-value>10</var-value></var>
                <var><var-name>mask</var-name><var-value>^[a-zA-Z0-9]*$</var-value></var>
            </field>
            <field property="age" depends="required,integer,intRange">
                <msg name="required" key="error.age.blank" />
                <msg name="integer" key="error.age.integer" />
                <msg name="intRange" key="error.age.intRange" />
                <arg name="intRange" key="${var:min}" position="0" resource="false" />
                <arg name="intRange" key="${var:max}" position="1" resource="false" />
                <var><var-name>min</var-name><var-value>18</var-value></var>
                <var><var-name>max</var-name><var-value>60</var-value></var>
            </field>
            <field property="email" depends="required,email">
                <msg name="required" key="error.email.blank" />
                <msg name="email" key="error.email.invalid" />
            </field>
        </form>
    </formset>
</form-validation>

步驟 6:錯誤訊息屬性檔 ErrorDescription.properties

error.name.blank=姓名不能為空
error.name.minLength=姓名的長度不能小於{0}
error.name.maxLength=姓名的長度不能大於{0}
error.name.alphanum=姓名必須由字母和數字組成
error.age.blank=年齡不能為空
error.age.integer=年齡必須為數字
error.age.intRange=年齡必須在{0}和{1}之間

安裝 Validator 外掛

於 struts-config.xml:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml" />
</plug-in>
  • validator-rules.xml:框架內建驗證器定義(Struts 發行包 lib 目錄或 MyEclipse 自動複製至 WEB-INF)。
  • validator.xml:專案自訂驗證規則(可多檔,逗號分隔)。

測試

訪問 https://localhost:8080/samples/firstValidator.jsp,輸入錯誤資料送出,畫面顯示紅字錯誤訊息。

總結

Validator 框架將驗證邏輯外部化為 XML,配合 ValidatorForm 自動整合,實現「零驗證程式碼、集中維護、標準化驗證、客戶端/伺服端雙模」的現代表單驗證架構。

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