validator-rules.xml中包括了一些驗證器與驗器規則,除了要自訂驗證器或驗證規則之外,基本上 您並不需要去變更它。
如果您要進行客戶端的驗證,可以撰寫自己的 ActionForm 類別,並在validation.xml中定義要驗證的屬性欄位,一個範例如下:
- validation.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE form-validation PUBLIC 
  "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
  "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> 
 
 <form-validation> 
    <formset>
        <form name="userForm"> 
            <field 
                property="name" 
                depends="required"> 
                    <arg0 key="logon.username.displayname"/> 
             </field> 
         <field 
            property="email" 
            depends="required,mask"> 
            <arg0 key="logon.email.displayname"/> 
            <var> 
                <var-name>mask</var-name> 
                <var-value>
        ^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*\$
                </var-value> 
            </var> 
         </field> 
        </form> 
    </formset> 
</form-validation> 
<form>的name屬性指明我們將為哪一個ActionForm作驗證,這個名稱必須在struts- config.xml中有定義,userForm中包括兩個屬性name與email,<field>定義要驗證的屬性欄位, depends定義所使用的驗證器,required驗證器會檢查欄位是否填寫,如果沒有,它會使用application.properties中的訊 息:
- application.properties
# -- validator -- 
errors.invalid={0} is invalid. 
..... 
# -- display -- 
logon.username.displayname=Username 
logon.email.displayname=Email  
您可以將struts-blank中的application.properties複製過來,有 # -- validator -- 下的驗證訊息將為Validator使用,arg0 會替換 {0} 中的文字。
如果depends中指定了兩個以上的驗證器,則會依序使用,如果有一個驗證不通過,則會停止驗證並作出相關回應,mask驗證器用來驗證所輸入的欄位是 否符合我們的設定格式,使用regular expression來設定驗證格式。
Validator的客戶端驗證是使用JavaScript來進行驗證,驗證規則定義在validator-rules.xml中,有興趣 的話可以看看當中有關於JavaScript是如何進行驗證的,我們可以直接使用<html:javascript>標籤來寫出所必須的 JavaScript,一個例子如下:
- test.jsp
<%@ taglib uri="/tags/struts-bean" prefix="bean" %> 
<%@ taglib uri="/tags/struts-html" prefix="html" %> 
<%@page contentType="text/html; charset=Big5"%> 
<html:html> 
<head> 
 <title>Login</title> 
 <html:base/> 
</head> 
<body bgcolor="white">
 
 <html:messages id="error"> 
     <bean:write name="error"/> 
 </html:messages>
 
 <html:form action="/login.do" focus="name"
            onsubmit="return validateUserForm(this)"> 
    名稱:<html:text property="name" size="20"/><br> 
    郵件:<html:text property="email" size="20"/><br> 
    <html:submit/> <html:reset/> 
 </html:form> 
 
 <html:javascript formName="userForm"/> 
 
</body> 
</html:html> 
在validation.xml的設定上,您可以定義一些常量,以方便在設定過程中使用,例如定義mask的regular expression,例如:
- validation.xml
... 
 <global> 
     <constant> 
         <constant-name>email</constant-name> 
         <constant-value>
        ^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*\$
         </constant-value> 
     </constant> 
 </global> 
 <formset> 
     <form name="userForm"> 
         <field 
             property="name" 
             depends="required"> 
             <arg0 key="logon.username.displayname"/> 
             </field> 
         <field 
            property="email" 
            depends="required,mask"> 
            <arg0 key="logon.email.displayname"/> 
            <var> 
                <var-name>mask</var-name> 
                <var-value>\${email}</var-value> 
            </var> 
         </field> 
    </form> 
 </formset>
... 
定義常量在管理上會很方便,日後如果要改變regular expression,就只要更改常量中的設定就好了。

