三大框架(ssh)——struts深入學習(Validator校驗資料)
使用Validator配置檔案校驗資料
我們在提交表單資料時,通常都需要增加資料的校驗處理。資料校驗分為:客戶端校驗、伺服器端校驗。Struts2給我們提供了豐富的支援!
Struts2提供了很多資料校驗器,常用的有
校驗器 |
用法 |
required |
驗證被校驗表單域是否為null |
requiredstring |
驗證被校驗String是否為null或空字串,可選引數trim,可在對字串執行trim操作 |
stringlength | 檢驗字串的長度範圍,可選引數trim、mixLength、maxLength |
int/double |
檢查輸入是否為數字,並且可判斷數值範圍。可選引數:min、max等 |
date |
檢查date的範圍,可選引數:min、max |
|
檢查輸入的是否符合email格式 |
url |
檢查輸入的是否符合url格式 |
regex |
檢查是否能匹配到正則表示式。基本可以符合我們全部的驗證要求!! |
使用struts2的資料校驗需要按照如下步驟程式設計:
1. testFormLabel.jsp頁面中表單程式碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC <html> <head> <title>測試struts2</title> </head> <body> <s:form action="test" name="regFrm" validate="true" > <s:textfield label="使用者名稱" name="uname"></s:textfield> <s:password label="密碼" name="pwd" ></s:password> <s:textfield label="郵箱" name="email"></s:textfield> <s:submit value="註冊" ></s:submit> </s:form> </body> </html> |
2. Action類需要實現介面:Validateable。通常繼承ActionSupport即可,該類實現了Validateable介面。
package com.bjsxt.struts.test;
import com.opensymphony.xwork2.ActionSupport;
public class TestValidateAction extends ActionSupport/*需要繼承從而支援校驗*/{
private String uname; private String pwd; private String email;
public String execute() throws Exception { //增加測試程式碼
return this.SUCCESS; }
//省略get和set方法!
} |
3.在Action類所在的包中增加校驗檔案:Action類名[-action別名]-validation.xml。內容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="uname"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>使用者名稱不不能為空,請輸入!</message> </field-validator> <field-validator type="stringlength"> <param name="trim">true</param> <param name="minLength">5</param> <param name="maxLength">10</param> <message>使用者名稱長度在5-10之間!</message> </field-validator> </field> <field name="pwd"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>密碼不不能為空,請輸入!</message> </field-validator> <field-validator type="stringlength"> <param name="trim">true</param> <param name="minLength">5</param> <param name="maxLength">10</param> <message>密碼長度在5-10之間!</message> </field-validator> </field> <field name="email"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>郵箱不能為空,請輸入!</message> </field-validator> <field-validator type="email"> <param name="trim">true</param> <message>郵箱格式不合法!</message> </field-validator> </field>
</validators> |
4.struts.xml中action的相關配置中,增加input頁面:
<action name="testValidate" class="com.bjsxt.struts.test.TestValidateAction"> <result name="success">/ok.jsp</result> <result name="input">/testFormLabel.jsp</result> </action> |
5.一般需要增加客戶端驗證,<s:form>中增加屬性validate=true即可。
6.測試,訪問testFormLabel.jsp頁面。