之前的手动校是在Action中编写validate犯法或validateXXX形式的方法来完成校验的,如果要给予验证框架来完成输入校验,只需在于Action同一目录下创建一个xml格式的验证文件即可。而之前Action中添加validate方法或validateXXX方法就不需要了。
Action.java代码
package action;
import com.opensymphony.xwork2.ActionSupport;
public class check extends ActionSupport {
private static final long serialVersionUID = 1L;
private String user;
private String pass;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="struts2yanzheng" extends="struts-default">
<action name="check" class="action.check">
<result name="input">/index.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
编写一个check-validation.xml的配置文件即可完成工作,注意,这种配置文件的命名是Action名称为validation.xml因为当前的Action是check.java,所以对应的配置文件名称是check-validation.xml。
check-validation.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入用户名!</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(/w{4,25})]]></param>
<message>输入的用户名只能是字母和数字,且长度在4到25之间</message>
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入密码!</message>
</field-validator>
</field>
</validators>
上面的配置文件中定义了不同的错误类型以及相关错误的提示信息,登陆页面
<%@ 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="check">
<s:textfield name="user" label="用户"></s:textfield>
<s:password name="pass" label="密码"></s:password>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
编写校验规则文件
基于Struts2校验框架的校验的校验规则文件的编写尤其重要,校验的文件是xml格式,文件名规则是<Action 名称>-validation.xml.
每个Action都可以对应有一个这样的校验配置文件,用来对当前的Action进行校验。校验文件的根元素是<validators></validators>,
<validators>可以包含多个<field></field>或<validator></validator>元素。<field>用来指定Action中药校验的属性字段名,如下:
<field name="user">
...
</field>
以上的代码说明要对Action中的user字段进行校验,如果有多个属性字段需要验证,添加多个<filed>标记即可,属性字段名称要和<filed>
的那么属性相同。
在<field>标记中一班添加<field-validator>标记,用来指定验证规则。如下:
<field name="user">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入用户名!</message>
</field-validator>
</field>
<field-validator>的type属性值requiredstring指的是必填字符串校验器,也就是说校验规则是必填字符串校验器。
还需要在<field-validator>标记里添加一个<param>和一个<message>,其作用就是如果user为空的话,提示信息是“必须输入用户名”。
如果还要验证字符串字符多少及其字符组成.
可以使用regex(正则表达式进行验证)。
<field name="user">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入用户名!</message>
<field-validator type="regex">
<param name="expression"><![CDATA[(/w{4,25})]></param>
<message>用户民只能是字母和数字,并且长度在4-25之间</message>
</field-validator>
</field-validator>
</field>
<param>用于指定正则表达式,<message>用于指定不符合规则的错误信息。<field></field>用来指定设置要校验的字段,
也就是字段校验。
常见的校验器:
必填校验器
<field name="username">
<field-validator type="required">
<message>用户名不能为空!</message>
</field-validator>
</field>
必填字符串校验器
<field name="name">
<field-validator type="requirdstring">
<param name="trim">true</param>
<message>必须输入姓名!</message>
</field-validator>
</field>
整数校验器
<field name="age">
<field-validator type="int">
<param name="min">18</param>
<param name="max">80</param>
<message>年龄的字段必须大于18小于80</message>
</field-validator>
</field>
日期校验器
<field name="birthday">
<field-validator type="date">
<param name="min">1950</param>
<param name="max">2015</param>
<message>出生日期不合法,必须在${min}和${max}之间!</message>
</field-validator>
</field>
字段表达式校验器
<field name="age">
<field-validator type="fieldexpression">
<param name="expression">age>agew</param>
<message>男性年龄必须大于女性年龄!</message>
</field-validator>
</field>
邮件地址校验器
<field name="email">
<field-validator type="email">
<message>邮件地址不合法!</message>
</field-validator>
</field>
网址校验器:
<field name="url">
<field-validator type="url">
<message>url地址不合法!</message>
</field-validator>
</field>
字符串长度校验器
<field name="name">
<field-validator type="stringlength">
<param name="maxLength">15</param>
<param name="minLength">6</param>
<message>姓名长度为6到15个字符!</message>
</field-validator>
</field>
正则表达式校验器:
<field name="name">
<field-validator type="regx">
<param name="expression"><正则表达式内容></param>
<message>不合法</message>
</field-validator>
</field>