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

Struts2XML验证

2014-02-04 16:44 363 查看

基于XML配置方式实现输入校验

1、建立Jsp页面,定义需求

* 用户名不能为null ,""

* 密码不能为null, ""
并且密码的长度6-12之间

2、定义Action

* 要继承ActionSupport或者实现Validateable接口:



3、配置struts_validate.xml文件

* 验证出错转向的页面

struts.xml配置<resultname=“input”>/validate/loginxml.jsp</result>

其中input转向是在action中已经定义好的.



4、配置验证的xml文件

* 验证的xml文件的规范在xwork-core-2.3.1.1.jar包下的:xwork-validator-1.0.3.dtd

* 验证文件的命名

* 在这个校验文件中,对action中字符串类型的username属性进行验证,

首先要求调用trim()方法去掉空格,然后判断用户名是否为空。

* 该文件需要和action类放在同一个包下,文件的取名应遵守

ActionClassName-validation.xml规则,其中ActionClassName为action

的简单类名,-validation为固定写法。

* 例如:如果Action类为cn.itcast.validate.ValidateXmlAction.
那么该文件

的取名应为:ValidateXmlAction-validation.xml

* ValidateXmlAction-validation.xml为文件的配置如下









基于XML配置方式对指定action方法实现输入校验

当校验文件的取名为ActionClassName-validation.xml时,会对 action中的所有处理方法实施输入验证。

如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称。例如:在实际应用中,常有以下配置:

<actionname="user_*" class="cn.itcast.action.UserAction" method="{1}">

<resultname="success">/WEB-INF/page/message.jsp</result>

<resultname="input">/WEB-INF/page/addUser.jsp</result>

</action>

UserAction中有以下两个处理方法:

publicString add() throws Exception{

....

}

publicString update() throws Exception{

....

}

要对add()方法实施验证,校验文件的取名为: UserAction-user_add-validation.xml

要对update()方法实施验证,校验文件的取名为: UserAction-user_update-validation.xml

Struts2 内建的验证程序

required: 确保某给定字段的值不是空值null

requiredstring:
确保某给定字段的值既不是空值null,
也不是空白.

trim 参数.
默认为true,
表示struts 在验证该字段值之前先剔除前后空格.

stringlength:
验证一个非空的字段值是不是有足够的长度.

minLength: 相关字段的最小长度.
若没有给出这个参数,
该字段将没有最小长度限制

maxLength:相关字段的最大长度.
若没有给出这个参数,
该字段将没有最大长度限制

trim: 在验证之前是否去除前后空格

int:检查给定字段的值是否可以被转换为一个整数

min: 相关字段的最小值.
若没给出这个参数,
该字段将没有最小值限制

max: 相关字段的最大值.
若没给出这个参数,
该字段将没有最大值限制

date: 确保某给定日期字段的值落在一个给定的范围内

max:相关字段的最大值.
若没给出这个参数,
该字段将没有最大值限制

min:相关字段的最小值.
若没给出这个参数,
该字段将没有最小值限制

email: 检查给定String
值是否是一个合法的email

url: 检查给定String
值是否是一个合法的url

regex: 检查某给定字段的值是否与一个给定的正则表达式模式相匹配.

expresssion*:
用来匹配的正则表达式

caseSensitive:
是否区分字母的大小写. 默认为true

trim: 是否去除前后空格.
默认为true

conversion(转换校验器,指定在类型转换失败时,提示的错误信息)

visitor(用于校验action中的复合属性,它指定一个校验文件用于校验复合属性中的属性)

expression(OGNL表达式校验器,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过,该校验器不可用在字段校验器风格的配置中)

double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)



required 必填校验器

<field-validatortype="required">

<message>性别不能为空!</message>

</field-validator>

requiredstring 必填字符串校验器

<field-validatortype="requiredstring">

<param name="trim">true</param>

<message>用户名不能为空!</message>

</field-validator>

stringlength:字符串长度校验器

<field-validatortype="stringlength">

<param name="maxLength">10</param>

<param name="minLength">2</param>

<param name="trim">true</param>

<message><![CDATA[产品名称应在2-10个字符之间]]></message>

</field-validator>

int:整数校验器

<field-validatortype="int">

<param name="min">1</param>

<param name="max">150</param>

<message>年龄必须在1-150之间</message>

</field-validator>

字段OGNL表达式校验器

<fieldname="imagefile">

<field-validator type="fieldexpression">

<paramname="expression"><![CDATA[imagefile.length() <= 0]]></param>

<message>文件不能为空</message>

</field-validator>

</field>

email:邮件地址校验器

<field-validatortype="email">

<message>电子邮件地址无效</message>

</field-validator>

regex:正则表达式校验器

<field-validatortype="regex">

<paramname="expression"><![CDATA[^13\d{9}$]]></param>

<message>手机号格式不正确!</message>

</field-validator>

基于XML校验的一些特点

当为某个action提供了ActionClassName-validation.xml和ActionClassName-ActionName-validation.xml两种规则的校验文件时,系统按下面顺序寻找校验文件:

1。AconClassName-validation.xml

2。ActionClassName-ActionName-validation.xml

系统寻找到第一个校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总,然后全部应用于处理方法的校验。如果两个校验文件中指定的校验规则冲突,则只使用后面文件中的校验规则。

当action继承了另一个action,父类action的校验文件会先被搜索到。假设UserAction继承BaseAction,UserAction在struts.xml的配置如下:

<actionname="user" class="cn.itcast.action.UserAction" method="{1}">

.....

</action>

访问上面名为user的action,系统先搜索到BaseAction-validation.xml,
BaseAction-user-validation.xml,接着搜索到UserAction-validation.xml, UserAction-user-validation.xml。校验规则是这四个文件的总和。

总结

struts2框架验证(xml方式):

* 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法

* 创建一个xml格式验证文件:

* 命名方式:ActionClassName-validation.xml,ActionClassName指的是动作类action的名称

* <validators>标签:根元素

* field:指定action中要校验的属性,实际上就是页面中表单的name属性的值

* name:指定页面中表单的name属性的值

* field-validator:指定验证规则

* type:指定验证规则名称,

struts2框架提供的验证规则放在xwork-core-xxx.jar

下的com\opensymphony\xwork2\validator\validators

的default.xml配置文件。

* param:向底层的验证规则传递的参数

* message:验证失败时,提供的错误提示信息

* 如果要对指定方法进行验证的话:

* xml验证文件的命名方式:ActionClassName-ActionName-validation.xml,

ActionName对应的是struts.xml文件对应的action标签的name属性的值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: