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>