struts的validator框架使用

人生不如意事十有八九。本来前天就已经做好的struts的validator框架,昨天重新使用就不行了,知道今天才基本搞懂。我想跟我一样的仁兄大有人在,因此写下给各位网友参考。如果有不对或者有讨论的地方,还望各位不吝赐教。
我今天不是详细讨论validator的使用方法,而是重点谈谈使用validator框架的几个应注重注意的问题。
首先给出validator框架的一般配置过程(默认使用struts框架):
1.在配置struts-config.xml中定义一个FormBean,并且它是继承动态ActionForm,即ValidatorForm或者ValidatorActionForm,或者是他们的子类。我继承的是ValidatorForm类。设置FormBean的属性和setter、getter方法。注意不要继承validator方法。
2.在显示页面,例如登录页面(login.jsp),定义form表格及其属性。另外定义错误的提示信息,也就是使用的<html:errors/>标签。
3.在Action页面中,编写业务处理代码,这一步与没有使用验证validator框架一样。注意,当你是从没有使用validator框架之上编写的代码,需要从ActionForm类到ValidatorActionForm类的转换。
4.这一步是最关键的步骤之一,就是编写validation.xml和validator-rules.xml作为验证的规则。其中validator-rules.xml文件在使用struts框架的时候就已经给出,故编写validation.xml文件就是重点要说的。
5.完成前面4步后,再在ApplicationResources.properties文件中输入要显示的错误信息。
6.最后再在struts-config.xml中配置plug-in插件,validator框架最为插件来执行表单验证。并且注意的是要导入validator框架用到的8个jar包,分别是commons-validator.jar、jakarta-oro.jar、struts.jar,和commons-beanutils.jar、commoms-fileupload.jar、commons-digester.jar、commons-logging.jar、antrl.jar。

以下是重点要说的几个注意点:
在第4步中,编写validation.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "validator_1_0.dtd">
<form-validation>
<formset>
<form name="validLoginForm">
<field property="…" depends="…">
<arg0 key="…"/>
</field>
<field property="…" >
<arg0 key="…"/>
</field>
</form>
</formset>
</form-validation>


首先应注意form元素中的name属性,它是与struts-config.xml中的<form-bean>元素中的name相同,也就是你编写的form-bean这个类(例如你编写了LoginForm这个类)后取的一个名字。(这里最容易修改name后,没有修改在validation.xml中form元素的name属性)
其次field元素中的property属性就是需要检查的字段(例如LoginForm这个类里的私有属性),像username,password,而depends属性说明了要进行几项校验和哪些校验。
重点是arg元素:<arg0>、<arg1>、<arg2>说明了进行校验的类型和次序。一般而言,arg0用来校验字段是否为空,key属性标注了一个键,而在
ApplicationResource.properties文件中注释了响应的一对“键——值”,而这里的“值”就是要显示的错误信息。
假设需要验证密码(password),不能为空,且大于等于6小于等于15,则可以写成
validation.xml:
<field property="password" depends="required ">
<arg0 key="lable.password"/>
</field>

ApplicationResource.properties:
lable.password=password
errors.required={0} is required!

注意errors.required={0} is required这个键值对中,errors.required这个键是固定这么写的,写成别的就不能显示,{0}是表示arg0元素中key键的值,即password。当在显示页面(登录页面)校验不通过时,将出现password is required信息。
当你需要验证密码不为空,且大于等于6,小于等于15,如下编辑:
<field property="password" depends="required,minlength,maxlength">
<arg0 key="lable.password"/>
<arg1 key="${var:minlength}" name="minlength" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
<arg2 key="${var:maxlength}" name="maxlength" resource="false"/>
<var>
<var-name>maxlength</var-name>
<var-value>15</var-value>
</var>
</field>

然后在ApplicationResource.properties中编写了下面注释:
lable.password=password
errors.required={0} is required!
errors.minlength={0} cannot be smaller than {1} characters
errors.maxlength={0} cannot be larget than {2} characters

我再解释一下,<var></var>元素用来定义最大最小值的定义。
如上所示,最小值为6就是:
<arg1 key="${var:minlength}" name="minlength" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>

这里的key属性为${var:minlength},它表示取得最小值的值,然后将值投影到ApplicationResource.properties注释中的有{[color=darkred]1[/color]}标注的地方,当然实在errors.minlength键值对中。
最后注意的问题就是在登录jsp页面中,校验错误的标签代码应该如下所示:
<html:errors property="password"/>

这里的property的值应该与validation.xml中field元素中的property属性一致,且必须是FormBean类中的字段。
在最后我提醒一下,我在重复学习validator框架的时候,也是学习别人的例子,但自己做的就是不会报错,有时需要重新启动一下服务器,或者重启一下你的编辑工具。
推荐jar下载网站:http://www.findjar.com/index.jsp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值