使用基于
XML
配置方式实现输入校验时,
Action
也需要继承
ActionSupport
,
并且提供校验文件,校验文件和
action
类放在同一个包下,文件的取名格式为:
ActionClassName-validation.xml
,其中
ActionClassName
为
action
的简单类名,
-validation
为固定写法。如果
Action
类为
cn.itcast.UserAction
,那么该文件的取名应为:
UserAction-validation.xml
。
下面是校验文件的模版:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
<field name="
username
">
<field-validator type="
requiredstring
">
<param name="trim">true</param>
<message>
用户名不能为空
!</message>
</field-validator>
</field>
</validators>
<field>
指定
action
中要校验的属性
,
<field-validator>
指定校验器,上面指定的校验器
requiredstring
是由系统提供的,系统提供了能
满足大部分验证需求的校验器,这些校验器的定义可以在
xwork-2.x.jar
中的
com.opensymphony.xwork2.validator.validators
下的
default.xml
中找到。
<message>
为校验失败后的提示信息
,
如果需要国际化,可以为
message
指定
key
属性
,
key
的值为资源文件中的
key
。
在这个校验文件中,对
action
中字符串类型的
username
属性进行验证,首先要求调用
trim()
方法去掉空格,然后判断用户名是否为空。
编写校验文件时,不能出现帮助信息
在编写
ActionClassName-validation.xml
校验文件时
,
如果出现不了帮助信息
,
可以按下面
方式解决:
windwos->preferences->myeclipse->files and editors->xml->xmlcatalog
点
“
add
”
,
在出现的窗口中的
location
中选
“
File system
”
,
然后在
xwork-2.1.2
解压目录的
src\java
目录中选择
xwork-validator-1.0.3.dtd,
回到设置窗口的时候不要急着关闭窗口
,
应把窗口中的
Key Type
改为
URI
。
Key
改为
http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd
struts2提供的校验器列表
系统提供的校验器如下:
required
(
必填校验器
,
要求
field
的值不能为
null)
requiredstring
(
必填字符串校验器
,
要求
field
的值不能为
null,
并且长度大于
0,
默认情况下会对字符串去前后空格
)
stringlength
(
字符串长度校验器
,
要求
field
的值必须在指定的范围内
,
否则校验失败
,minLength
参数指定最小长度
,maxLength
参数指定最大长度
,trim
参数指定校验
field
之前是否去除字符串前后的空格
)
regex
(
正则表达式校验器
,
检查被校验的
field
是否匹配一个正则表达式
.expression
参数指定正则表达式
,caseSensitive
参数指定进行正则表达式匹配时
,
是否区分大小写
,
默认值为
true)
int
(
整数校验器
,
要求
field
的整数值必须在指定范围内
,min
指定最小值
,max
指定最大值
)
double
(
双精度浮点数校验器
,
要求
field
的双精度浮点数必须在指定范围内
,min
指定最小值
,max
指定最大值
)
fieldexpression
(
字段
OGNL
表达式校验器
,
要求
field
满足一个
ognl
表达式
,expression
参数指定
ognl
表达式
,
该逻辑表
达式基于
ValueStack
进行求值
,
返回
true
时校验通过
,
否则不通过
)
email
(
邮件地址校验器
,
要求如果
field
的值非空
,
则必须是合法的邮件地址
)
url
(
网址校验器
,
要求如果
field
的值非空
,
则必须是合法的
url
地址
)
date
(
日期校验器
,
要求
field
的日期值必须在指定范围内
,min
指定最小值
,max
指定最大值
)
conversion
(
转换校验器
,
指定在类型转换失败时
,
提示的错误信息
)
visitor
(
用于校验
action
中的复合属性
,
它指定一个校验文件用于校验复合属性中的属性
)
expression
(OGNL
表达式校验器
,expression
参数指定
ognl
表达式
,
该逻辑表达式基于
ValueStack
进行求值
,
返回
true
时校验通过
,
否则不通过
,
该校验器不可用在字段校验器风格的配置中
)
校验器的使用例子
required
必填校验器
<field-validator type="required">
<message>
性别不能为空
!</message>
</field-validator>
requiredstring
必填字符串校验器
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>
用户名不能为空
!</message>
</field-validator>
stringlength
:
字符串长度校验器
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">2</param>
<param name="trim">true</param>
<message><![CDATA[
产品名称应在
2-10
个字符之间
]]></message>
</field-validator>
email
:
邮件地址校验器
<field-validator type="email">
<message>
电子邮件地址无效
</message>
</field-validator>
regex
:
正则表达式校验器
<field-validator type="regex">
<param name="expression"><![CDATA[^1[358]\d{9}$]]></param>
<message>
手机号格式不正确
!</message>
</field-validator>
int
:整数校验器
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>
年龄必须在
1-150
之间
</message>
</field-validator>
字段
OGNL
表达式校验器
<field name="imagefile">
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[imagefile.length() <= 0]]></param>
<message>
文件不能为空
</message>
</field-validator>
</field>
本文介绍如何在Struts2框架中使用XML配置文件进行输入校验,包括各种内置校验器如requiredstring、stringlength等的使用方法及示例。
342

被折叠的 条评论
为什么被折叠?



