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

Struts 1.x 系列教程(11):Validator 進階應用 — 巢狀/索引屬性、常數變數、客戶端驗證

     編輯:Java 相關知識

前言

Validator 框架支援巢狀屬性、索引屬性驗證,提供常數/變數機制減少重複配置,並能一鍵切換為 JavaScript 客戶端驗證。本文詳細說明這三大進階功能。

一、巢狀與索引屬性驗證

巢狀屬性

若 FormBean 有屬性 employee(型別 Employee),欲驗證其 salary:

<field property="employee.salary" depends="required,floatRange"> ... </field>

以點號 . 串連屬性路徑。

索引屬性

驗證集合/陣列每個元素的同一規則,使用 indexedListProperty:

<field indexedListProperty="items" depends="required,integer"> ... </field>

框架會對 items 每個元素套用驗證。

巢狀 + 索引組合

<field indexedListProperty="items" property="employee.age" depends="required,integer"> ... </field>

驗證 items 集合中每個元素的 employee.age。

二、常數與變數機制

1. 全域常數 <global>

置於第一個 <formset> 之前,所有表單可用:

<global>
    <constant>
        <constant-name>alphaNumMask</constant-name>
        <constant-value>^[a-zA-Z0-9]*$</constant-value>
    </constant>
</global>

2. 局部常數

置於 <formset> 開頭,僅限該 formset 內表單使用:

<formset>
    <constant>
        <constant-name>alphaNumMask</constant-name>
        <constant-value>^[a-zA-Z0-9]*$</constant-value>
    </constant>
    <form name="myForm"> ... </form>
</formset>

3. 使用常數(EL 語法)

<var>
    <var-name>mask</var-name>
    <var-value>${alphaNumMask}</var-value>
</var>

4. 變數 <var> 傳遞參數給錯誤訊息

<field property="name" depends="required">
    <msg name="required" key="error.name.blank" />
    <arg name="required" key="${var:required}" position="0" resource="false" />
    <var>
        <var-name>required</var-name>
        <var-value>姓名</var-value>
    </var>
</field>

${var:required} 將變數值「姓名」插入錯誤訊息 {0} 位置。

三、客戶端驗證(JavaScript)

只需在 JSP 兩處修改:

  1. 頁面任意位置加入標籤:
    <html:javascript formName="firstValidatorForm" />
  2. <html:form> 加入 onsubmit:
    <html:form action="firstValidator" onsubmit="return validateFirstValidatorForm(this);">

原理:<html:javascript> 會輸出 Validator 內建驗證器的 JavaScript 實作,並產生入口函數 validate(form)。提交時呼叫此函數,通過才送往伺服器。

總結

Validator 進階功能讓驗證配置更 DRY(常數/變數)、支援複雜資料結構(巢狀/索引)、並能零成本啟用客戶端即時回饋,是 Struts 表單驗證的最佳實踐組合。

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