1. 程式人生 > >validator-rules.xml驗證框架使用

validator-rules.xml驗證框架使用

 要想用到這個 xml 首先 我們要進入 此  xml 複製 其中的 plugin  配置到 struts - config .xml 裡面

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">

 <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>

</plug-in>

 然後我們開始 寫我們的 Userform  此form 非彼form  而是要繼承至 ValidatorForm

 要不 就不能使用到 validate.rules 的框架

----------------------------------------我寫的Userform------------------------------------------------------

package com.form;

 import org.apache.struts.validator.ValidatorForm; 

public class Userform extends ValidatorForm{

 private String username; 

private String password; 

public String getUsername() {

 return username; 

} 

public void setUsername(String username) {

 this.username = username; 

} 

public String getPassword() { 

return password; 

} 

public void setPassword(String password) {

 this.password = password;

 }

 } 

由於 我們配置完struts-config 裡的plugIn 之後 裡面需要一個 validation.xml 於是我們要新建個 xml

  內容 如下

<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> 

<form-validation>

 <formset> 

<form name="Userform"> <field property="username" depends="required"></field> 

<field property="password" depends="required"></field>

 </form> 

</formset>

 </form-validation>

    *強調  property 是 驗證的物件  depends 是使用的 方法.. required 是驗證空..validator.rules裡面還有別的一些方法  我們要注意

---------------------------------------------Action--------------------------------------------------------

 然後我們 寫 Action  這裡 我的Action 是這樣子

public class Useraction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 

System.out.println("fuck"); 

return new ActionForward("/index.jsp"); }

 }

Action裡就隨便寫了點東西  讓他能 提交到這個地方就行(我們主要是進行驗證)

Form 和 Action 都配置完後  你也應該 知道我們接下來做什麼 .. 對.. 就是配置struts-config.xml

配置 <form-bean name="Userform" type="com.form.Userform"/>

<action path="/User" type="com.action.Useraction" name="Userform" input="/inde.jsp" scope="request" validate="true"></action>

 也就是正常配置 沒別的什麼  開啟驗證 為主要

然後我們就可以在 頁面中進行插入 <html:errors>標籤

如下:

<body> 

<form action="User.do" method="post"> 

<input type="text" name="username"/><html:errors property="username"/><br/> 

<input type="password" name="password"/><html:errors property="password"/><br/>

 <input type="submit"/> 

</form>

 </body>

   msg="errors.required" 這是validator.rules.xml 裡面 提供的 返回 錯誤資訊..

所以我們要在 properties檔案裡 進行配置

                                   errors.required=username is null

我們沒分類  所以 username 和 password 會同時都出現 username is null。。。。。。。。。。。。。。。

----------------------------------------------------------處理錯誤資訊一致問題--------------------------------------------

在properties檔案裡 使用變數 定義 errors.required ={0} is null;

然後分別定義兩個  user.username=username        和    user.password=password

然後 在 validation.xml裡

<form-validation>

 <formset> 

<form name="Userform">

 <field property="username" depends="required">

 **<arg0 key="user.username"/> </field>

 <field property="password" depends="required"> 

**<arg0 key="user.password"/> 

</field>

 </form>

 </formset>

 --------------------------------------------Properties檔案---------------------------------------------------------------

errors.required={0} is null user.username=username user.password=password

 ------------------------------------------------------------------------------------------------------------------------------

如果想寫多個判斷的話 就在 validation.xml

裡的 <field property="password" depends="required"> required後面直接家,方法名

例如     depends="required,minilegth">

       設定 minilength長度

<var> <var-name>minilength</var-name> <var-value>5</var-value> </var>

-------------------------------------------------------------------------------------------------------

Properties 檔案 寫

   errors.required={0} is required.
   errors.minlength={0} can not be less than {1} characters.

<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> 

<form-validation>

 <global>

 <constant> 

<constant-name>length</constant-name> //全域性變數名 

<constant-value>5</constant-value> //全域性變數值

 </constant>

 </global>

 <formset>

 // 對哪個表 進行驗證 <form name="Userform">

 //depends 是需要什麼型別的 驗證 <field property="username" depends="required">

 <arg0 key="username" resource="false"/> </field> <field property="password" depends="required,minilength">

 <arg0 name="required" key="user.password" />

 //resource 是指是否從properties中獲取value 

// name是指 對當前哪個驗證 使用arg0 變數操作 不寫則表示所有

 <arg0 name="minilength" key="user.password" resource="false"/> 

<arg1 key="${var:minilength}" resource="false"/> 

//${var:minilength}是獲取下面(全域性) 獲取的value值

 <var> 

//引數名 

<var-name>minilength</var-name>

 //{var:length} 是獲取 全域性變數值 //當沒有全域性變數的時候可以直接寫 數! 

<var-value>${var:length}</var-value> 

</var>

 </field> 

</form> 

</formset> 

</form-validation>