使用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 "-//W3C//DTD HTML 4.01 Transitional//EN"> <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页面。