您的位置:首页 > 编程语言 > Java开发

Struts2数据校验(2)--使用XWork检验框架实现校验

2017-02-28 18:37 435 查看

2.使用XWork检验框架实现校验

通过XWork的validator框架也可以进行Struts2的数据校验,使用XWork的validator框架实现数据校验,只需编写一个验证文件便可。

1.验证文件

验证文件由两种:一种是actionName-validation.xml,actionName是需要校验的Action的类名,且需要放到和该类相同的路径下,这种校验和validate()方法的作用相同;另一种是

actionName-methodName-validation.xml,actionName是需要校验的Action的类名,methodName是Action中某个业务处理方法的方法名,且需要放到和该类相同的路径下,这种校验和validateX()方法的作用相同。

2.校验配置

(1)字段校验方式(Field-validator)
采用字段验证方式时,field是作为基本的子元素。

l validators:校验文件的根元素;

l field:是validators元素下的元素,name属性指定了被校验的字段;

l field-validator:field元素下的元素,type属性用来指定校验器的名称,每个field-validator元素都可以指定一个校验规则且每个field-validator属性都必须包含一个message元素;

l message:field-validator元素下的必备元素,该元素指出校验出错后的提示信息;

l param:field-validator元素下的元素,该元素指定了校验过程中使用到的参数。

示例如下:

<?xml
version="1.0"
encoding="GBK"?>
<!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="name">
<field-validator
type="requiredstring">
<message>the name is requred!</message>
</field-validator>
</field>
<field
name="age">
<field-validator
type="int">
<param
name="min">1</param>
<param
name="max">150</param>
<message>the age must be from 1 to 150!</message>
</field-validator>
</field>
</validators>

(2)非字段校验方式(Non-Field validator)
采用非字段校验方式时,validator元素是它的基本单位,每个validator元素指定一个校验规则。

l validators:校验文件的根元素;

l validator:validators元素下的元素,type属性指定了校验器的名称。一般情况下,该元素应该包含子元素<param name=”filedName”>以指定被校验的Action名。

l param:validator元素下的元素。

示例如下:

<?xml
version="1.0"
encoding="GBK"?>
<!DOCTYPE
validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>
<validator
type="int">
<param
name="fieldName">age</param>
<param
name="min">1</param>
<param
name="max">150</param>
<message>the age must be from 1 to 150!</message>
</validator>
<validator
type="email">
<param
name="fieldName">email_address</param>
<message>The eamil address you entered is not valid.</message>
</validator>
</validators>

上面介绍的两种校验方式都可以达到同样的效果,只是格式针对的对象不同。字段校验方式主要针对字段和属性,使用这种方式在校验时,对任何一个字段都能够返回一个明确的消息;而非子段校验方式则是将字段有效的组合在一起,这种方式不能对一个字段返回一个明确的消息。

3.校验器(validator)

字段校验方式和非字段校验方式校验方式,都需要用到校验器,下面就介绍一些常用的校验器。

(1) required校验器:要求指定的字段必须是非空的;

required字符校验方式:

<validators>
<field
name="name">
<field-validator
type="required">
<message>the name is required!</message>
</field-validator>
</field>
</validators>

required非字符校验方式:

<validators>
<validator
type="required">
<param
name="fieldName">name</param>
<message>the name is required!</message>
</validator>
</validators>

(2) requiredstring校验器:要求字段值必须非空且长度必须大于0;
requiredstring字符校验方式:

<validators>
<field
name="name">
<field-validator
type="requiredstring">
<message>the name is required!</message>
</field-validator>
</field>
</validators>

requiredstring非字符校验方式:

<validators>
<validator
type="requiredstring">
<param
name="fieldName">name</param>
<message>the name is required!</message>
</validator>
</validators>

(3) int校验器:整数校验器,可以指定字段的整数值必须在指定的范围内,需要标注min和max参数。(注:long、short和浮点数等校验器和int校验器类型)

int字符校验方式:

<validators>

<field
name="age">
<field-validator
type="int">
<param
name="min">1</param>
<param
name="max">150</param>
<message>the age must be from 1 to 150!</message>
</field-validator>
</field>
</validators>

int非字符校验方式:

<validators>
<validator
type="int">
<param
name="fieldName">age</param>
<param
name="min">1</param>
<param
name="max">150</param>
<message>the age must be from 1 to 150!</message>
</validator>
</validators>

(4) date校验器:要求指定字段的日期在指定的范围内;

date字符校验方式:

<validators>
<field
name="birthday">
<field-validator
type="date">
<message>The date you entered is not valid.</message>
</field-validator>
</field>
</validators>

date非字符校验方式:

<validators>
<validator
type="date">
<param
name="fieldName">birthday</param>
<message>the name is requred!</message>
</validator>
</validators>

(5) email校验器:用来校验邮箱地址是否合法;

email字符校验方式:

<validators>
<field
name=" email_address ">
<field-validator
type=" email ">
<message> The eamil address you entered is not valid.</message>
</field-validator>
</field>
</validators>

email非字符校验方式:

<validators>
<validator
type="email">
<param
name="fieldName">email_address</param>
<message>The eamil address you entered is not valid.</message>
</validator>
</validators>

(6) stringlength校验器:校验字段的长度必须在指定的范围内。

stringlength字符校验方式:

<validators>

<field
name="name">
<field-validator
type="stringlength">
<param
name="minLength">6</param>
<param
name="maxLength">20</param>
<message>the name must be from 6 to 20 char!</message>
</field-validator>
</field>
</validators>

stringlength非字符校验方式:

<validators>
<validator
type="stringlength">
<param
name="fieldName">name</param>
<param
name="minLength">6</param>
<param
name="maxLength">20</param>
<message>the age must be from 6 to 20 char!</message>
</validator>
</validators>

注释:如果想知道更多的校验器,可以找到位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框架内建的校验器。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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐