Struts2 数据验校
Struts2 对于提交的表单数据后端验校,除了一般直接将验校逻辑写在对应的 Action 中,其本身也提供了2种更加方便的数据验校方式:基于XML验校、基于注解验校;
基于XML验校
Struts2 提供了在 struts.xml 对验校过程进行配置;
加入一个提交的表单JSP如下:
login.jsp
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
<form action="login" method="post">
<s:filederror fieldName="username" /><br/> <!--提示表单验证错误信息-->
<s:filederror fieldName="age" /><br/>
<label>Enter your name</label><input type="text" name="name"/><br/>
<label>Enter your age</label><input type="text" name="age" /><br/>
<input type="submit" value="submit"/>
</form>
</body>
</html>
需要验校 name 不为空,age 不为空且 18<=age<=75,注意这2个属性已经包含在LoginAction的私有域中;
验校xml文件需要放置在
对应验校的Action同一目录下,同时命名格式为"
[action-class]-validation.xml",在Struts2运行时会自动读取该验校文件,当验校失败时,在这个示例中会返回“login.jsp”中,同时提示<message>中的内容(在JSP文件中使用
<s:fielderror> 标签显示,如上示例);
loginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd" >
<validators>
<!--name属性的验校配置-->
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Please enter your name</message>
</field-validator>
</field>
<!--age属性的验校配置-->
<field name="age">
<field-validator type="ini">
<param name="min">18</param>
<param name="min">75</param>
<message>age must between 18 and 75</message>
</field-validator>
</field>
</validators>
以下是 Struts2 提供的常用的数据验证器:
requiredstring 必填字符串验校器
该验校器要求字段必须非空而且长度>0,同时不能是“”;
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>name is required</message>
</field-validator>
</field>
</validators>
regex 正则表达式验校器
该验校器使用一个正则表达式验校字段是否合法,其中可选的 caseSensitive 属性用于指定进行正则表达式匹配是否区分大小写(默认为true);
<validators>
<field name="id">
<validator type="regex">
<param name="fieldName">id</param>
<param name="regex">\d{3}-\d{7}</param>
<message>illegal id</message>
</validator>
</field>
</validators>
stringlength 字符串长度验校器
该验校器用于验校字符串长度;
<validators>
<field name="username">
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength">1</param>
<param name="maxLength">10</param>
<message>the length of username must between ${minLength} and ${maxLength}</message>
</field-validator>
</field>
</validators>
int 整型数验校器
该验校器用于验校整数(包括int,long,short)的大小是否符合规定;
<validators>
<field name="age">
<field-validator type="int">
<param name="min">18</param>
<param name="max">65</param>
<message>age must between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
doube 浮点数验校器
该验校器用于验校浮点数(包括double,float)的大小是否符合规定;
<validators>
<field name="point">
<field-validator type="double">
<param name="min">0.45</param>
<param name="max">10.56</param>
<message>point must between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
date 日期验校器
该验校器用于验校一个日期值在某个指定的范围内;
<validators>
<field name="checkInDate">
<field-validator type="date">
<param name="fieldName">checkInDate</param>
<param name="min">2017-8-10</param>
<param name="max">2017-9-10</param>
<message>check in date must between ${min} and ${max}</message>
</field-validator>
</field>
</validators>
email 邮件地址验校器
该验校器用于验校一个email地址是否合法;
<validators>
<field name="userEmail">
<field-validator type="email">
<message>your email is illegal</message>
</field-validator>
</field>
</validators>
url URL地址验校器
该验校器用于验校一个URL是否合法;
<validators>
<field name="userUrl">
<field-validator type="url">
<message>your url is illegal</message>
</field-validator>
</field>
</validators>
conversion 转换验校器
该验校器用于验校字符在类型转化是否有错误产生,其中“repopulateField”属性用于指定装换失败的表单域是否保留原来的错误输入;
<validators>
<field name="conversion">
<field-validator type="age">
<param name="repopulateField">false</param>
<message>age conversion fail</message>
</field-validator>
</field>
</validators>
基于注解验校
除了以上使用验校文件进行表单域的验校之外,Struts2 还可以直接在Action类中通过注解对私有域进行验校,具体的验校器可以参考:
http://blog.youkuaiyun.com/al_assad/article/details/77119305