Struts2方便实用的内置校验器
2017-02-02 22:13
375 查看
转自:点我阅读原文
Struts2提供的声明式验证器在xwork-core-**.jar包的
com\opensymphony\xwork2\validator\validators\default.xml配置文件中 ,打开文件我们可以看到所有验证器声明:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
下面我们以一个小例子来试用一下部分的验证器
需求:对用户注册页面中的信息进行验证
先做准备工作:
先得有一个注册页面:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
打开之后,显示为:
对应的Action和model如下:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
struts.xml配置文件如下:
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
记得最后配置好web.xml中的struts过滤器,到此,准备工作就完成了
要使用声明式验证,那么需要在动作类对应的包中,建立一个名为 动作类名-validation.xml的配置文件
本例中,由于UserAction是在demo.action包中,那么我们就在该包中建立名为UserAction-validation.xml的配置文件
配置文件的doctype可以在xwork-core-**.jar中的dtd文件中找到,我们以xwork-validator-1.0.3.dtd这个文件为例,打开后复制里面的doctype,放置在我们新建的配置文件中
2
3
4
1
2
3
4
下面,我们就来用针对字段设置验证器的方式一一试验一下几个验证器
首先我们来试试用户名必填,这里需要注意内置验证器的required和requiredstring的区别,前者是验证字段不能为null,而后者是验证不能为空字符串
由于页面传递过来的字符串,不可能为null,如果没有值,会传递一个空字符串到服务器,而且用以接收的模型类中,对于这个字段也是使用的String来接收
所以,对于页面的输入框字段,后台又是使用String来接收的字段,需要使用的是requiredstring
本例中,我们在UserAction-validation.xml中,添加如下验证规则:
注意:若是表单中数据name="user.username" 在field name依然只写user.username
一个字段可以如上配置多个验证器,这里有一个小提示,整型的字段,如果不填写,会有一个默认的字段值0
以下是摘自别人家的博客的内容,我忘记了哪位的了。。。
struts2提供了大量的内置校验器:我们可以在xwork-core-**.jar的com.opensymphony.xwork2.validator.validators下找到如下配置文件:default.xml。里面列出了所有的内置校验器。
required:必填校验器,要求field的值不能为null。
requiredstring:必填字符串校验器,要求field的值不能为null,并且长度大于0
属性——trim:指定在校验之前是否去除字段串前后的空格。
stringlength:字段长度校验器,要求fidle的值必须在指定的范围内,否则校验失败。
属性——minLength:指定最小长度。 maxLength:指定量大长度。 trim:指定在校验之前是否去除字段串前后的空格。
regex:正则表达式校验器,检查衩校验的field是否匹配一个正则表达式。
属性——expression:指定正则表达式(2.3.15版用regexExpression)。 caseSensitive:指定进行正则表达式匹配时是否区分大小写。
int:整数校验器,要求field的整数值 必须在指定范围内。
属性——min:指定最小值。 max指定最大值。
double:双精度浮点数校验器,要求field的双精度浮点数值必须在指定范围内。
属性——min:指定最小值。 max指定最大值。
fieldexpression:字段OGNL表达式校验器。要求field满足一个ognl表达式。
属性——expression:指定ognl表达式
Struts2提供的声明式验证器在xwork-core-**.jar包的
com\opensymphony\xwork2\validator\validators\default.xml配置文件中 ,打开文件我们可以看到所有验证器声明:
<validators> <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/> <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/> <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/> <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/> <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/> <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/> <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/> <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/> <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/> <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/> <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/> <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/> <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/> <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/> </validators>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
下面我们以一个小例子来试用一下部分的验证器
需求:对用户注册页面中的信息进行验证
先做准备工作:
先得有一个注册页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>regist page</title> <s:head/> </head> <body> <s:form action="regist"> <s:textfield name="user.username" label="用户名" requiredLabel="true" requiredPosition="left"></s:textfield> <s:textfield name="user.password" label="密码" requiredLabel="true" requiredPosition="left"></s:textfield> <!-- list的取值是一个ONGL表达式,创建了一个Map对象。必须有name --> <s:radio name="user.gender" list="#{'male':'男性','female':'女性'}" label="性别" requiredLabel="true" requiredPosition="left"></s:radio> <!-- list的取值是一个ONGL表达式,创建了一个List对象。必须有name --> <s:checkboxlist name="user.hobbies" list="{'吃饭','睡觉','学java'}" label="爱好"></s:checkboxlist> <s:textfield name="user.birthday" label="出生日期:yyyy-MM-dd"></s:textfield> <s:textfield name="user.email" label="邮箱"></s:textfield> <s:textfield name="user.grade" label="成绩"></s:textfield> <s:submit value="注册"></s:submit> </s:form> </body> </html>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
打开之后,显示为:
对应的Action和model如下:
package demo.action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import demo.model.User; public class UserAction extends ActionSupport implements ModelDriven<User> { private static final long serialVersionUID = -5966666848749797668L; private User user = new User(); @Override public User getModel() { if (this.user == null) { this.user = new User(); } return this.user; } public String regist() { System.out.println(this.user); return SUCCESS; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package demo.model; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private String username; private String password; private String gender; private String hobbies; private Date birthday; private String email; private int grade; @Override public String toString() { return "User [username=" + username + ", password=" + password + ", gender=" + gender + ", hobbies=" + hobbies + ", birthday=" + birthday + ", email=" + email + ", grade=" + grade + "]"; } 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; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getHobbies() { return hobbies; } public void setHobbies(String hobbies) { this.hobbies = hobbies; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
struts.xml配置文件如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="user" extends="struts-default" namespace="/user"> <action name="regist" class="demo.action.UserAction" method="regist"> <result>/success.jsp</result> <result name="input">/register.jsp</result> <result name="error">/index.jsp</result> </action> </package> </struts>1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
记得最后配置好web.xml中的struts过滤器,到此,准备工作就完成了
要使用声明式验证,那么需要在动作类对应的包中,建立一个名为 动作类名-validation.xml的配置文件
本例中,由于UserAction是在demo.action包中,那么我们就在该包中建立名为UserAction-validation.xml的配置文件
配置文件的doctype可以在xwork-core-**.jar中的dtd文件中找到,我们以xwork-validator-1.0.3.dtd这个文件为例,打开后复制里面的doctype,放置在我们新建的配置文件中
<?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">1
2
3
4
1
2
3
4
下面,我们就来用针对字段设置验证器的方式一一试验一下几个验证器
首先我们来试试用户名必填,这里需要注意内置验证器的required和requiredstring的区别,前者是验证字段不能为null,而后者是验证不能为空字符串
由于页面传递过来的字符串,不可能为null,如果没有值,会传递一个空字符串到服务器,而且用以接收的模型类中,对于这个字段也是使用的String来接收
所以,对于页面的输入框字段,后台又是使用String来接收的字段,需要使用的是requiredstring
本例中,我们在UserAction-validation.xml中,添加如下验证规则:
注意:若是表单中数据name="user.username" 在field name依然只写user.username
<?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> <!-- filed表示是字段验证方式, name属性指定要验证的字段,与表单传递的字段名一致 --> <field name="user.username"> <!-- 指定验证规则,使用type属性指定验证器 --> <field-validator type="requiredstring"> <!-- 错误提示信息 --> <message>请输入用户名</message> </field-validator> </field> <field name="user.email"> <!-- email其实是regex验证规则的一个子类,只是专门为邮箱写了一个表达式来验证 --> <field-validator type="requiredstring"> <!-- 错误提示信息 --> <message>请输入邮箱</message> </field-validator> <field-validator type="email"> <message>请输入正确的邮箱</message> </field-validator> </field> <field name="user.birthday"> <field-validator type="required"> <!-- 错误提示信息 --> <message>请输入用户生日</message> </field-validator> <field-validator type="date"> <message>请输入正确的生日,注意日期的格式</message> </field-validator> </field> <field name="user.grade"> <field-validator type="required"> <!-- 错误提示信息 --> <message>请输入用户考试成绩</message> </field-validator> <field-validator type="int"> <param name="min">1</param> <param name="max">150</param> <message>分数必须为1~150的整数</message> </field-validator> </field> </validators>
一个字段可以如上配置多个验证器,这里有一个小提示,整型的字段,如果不填写,会有一个默认的字段值0
以下是摘自别人家的博客的内容,我忘记了哪位的了。。。
struts2提供了大量的内置校验器:我们可以在xwork-core-**.jar的com.opensymphony.xwork2.validator.validators下找到如下配置文件:default.xml。里面列出了所有的内置校验器。
required:必填校验器,要求field的值不能为null。
requiredstring:必填字符串校验器,要求field的值不能为null,并且长度大于0
属性——trim:指定在校验之前是否去除字段串前后的空格。
stringlength:字段长度校验器,要求fidle的值必须在指定的范围内,否则校验失败。
属性——minLength:指定最小长度。 maxLength:指定量大长度。 trim:指定在校验之前是否去除字段串前后的空格。
regex:正则表达式校验器,检查衩校验的field是否匹配一个正则表达式。
属性——expression:指定正则表达式(2.3.15版用regexExpression)。 caseSensitive:指定进行正则表达式匹配时是否区分大小写。
int:整数校验器,要求field的整数值 必须在指定范围内。
属性——min:指定最小值。 max指定最大值。
double:双精度浮点数校验器,要求field的双精度浮点数值必须在指定范围内。
属性——min:指定最小值。 max指定最大值。
fieldexpression:字段OGNL表达式校验器。要求field满足一个ognl表达式。
属性——expression:指定ognl表达式
相关文章推荐
- struts2学习笔记(九)struts2内置校验
- struts2中内置校验器不起作用可能原因
- Struts2内置校验器
- Struts2内置校验器——完整实例代码
- Struts2基于配置校验的内置类型及使用实例
- struts2内置校验器、ajax、json
- Struts2的内置校验器
- struts2校验框架,内置参数信息查看
- struts2-validate内置校验器失效的解决方法
- Struts2内置校验器
- struts2配置内置校验器
- Struts2校验的两种实现方式(使用内置校验和手动编写)
- Struts2内置校验器
- Struts2_对Action中所有方法进行输入校验
- Struts2输入校验之代码校验
- struts2--校验框架
- Struts2表单校验
- Struts2-字段优先校验
- android studio中修改快捷键以及实用的开发快捷键,方便技巧
- 实用方便解决error while loading shared libraries办法,及linux gcc 下使用总结