LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1094|回复: 2

【原创】Validator的客户端验证配置【原创】

[复制链接]
发表于 2005-5-15 14:26:42 | 显示全部楼层 |阅读模式
1 引入validator-rules.xml,这个文件是关于validator框架的常规验证规则,比如"required","maxlength","mask"。。。
这个文件通常放在/WEB-INF下面。

2 配置validation.xml文件,正是通过这个文件对Form设置验证规则,下面是一个示例:
[PHP]<form-validation>
        <formset>
                <form name="yourForm">
                        <field property="field1" depends="required, minlength, mask">
                                <msg name="mask" key="yourForm.validator.mask"/>
                                <arg key="yourForm.field1.name" position="0" />
                                <arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
                                <var>
                                        <var-name>mask</var-name>
                                        <var-value>^[a-zA-Z]*$</var-value>
                                </var>
                                <var>
                                        <var-name>minlength</var-name>
                                        <var-value>10</var-value>
                                </var>
                        </field>
                       
                        <field property="field2" depends="required">
                                <arg0 key="yourForm.field2.name" position="0">
                        </field>
                </form>
        </formset>
</form-validation>
[/PHP]其中 <form>元素的“name”是一个FormBean的名字,在struts-config.xml文件中配置了。
<field>元素的“property”属性是FormBean的一个属性名。
将这个Validation.xml文件保存到一个目录下,通常是"/WEB-INF/".

3 在struts的配置文件中添加validator插件,pathnames属性的值指向validator-rules.xml和validation.xml两个文件的位置(由此可以看出这两个文件可以随便放在哪里)
[PHP]<struts-config>
......
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
           <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
           <set-property property="stopOnFirstError" value="true"/>
<plug-in>
......
</struts-config>[/PHP]

4 配置验证提示信息的资源文件,比如是“MessageResources.properties”,这个文件是在struts-config.xml文件中的<message-resources>元素配置的。
在里面添加验证出错信息的内容(这些内容在struts包中的validator-rules.xml文件上方的注释中就有,直接拷贝过来就行了)
[PHP] # Struts Validator Error Messages
   errors.required={0} is required.
   errors.minlength={0} can not be less than {1} characters.
   errors.maxlength={0} can not be greater than {1} characters.
   errors.invalid={0} is invalid.

   errors.byte={0} must be a byte.
   errors.short={0} must be a short.
   errors.integer={0} must be an integer.
   errors.long={0} must be a long.
   errors.float={0} must be a float.
   errors.double={0} must be a double.

   errors.date={0} is not a date.
   errors.range={0} is not in the range {1} through {2}.
   errors.creditcard={0} is an invalid credit card number.
   errors.email={0} is an invalid e-mail address.[/PHP]

一般还要配置中文的资源文件,方法如上。

5 在使用validator客户端验证的jsp文件中添加如下的代码
[PHP]<html:form action="registratin-submit" onsubmit="return validateYourForm(this);">
.....
</html:form>
<html:javascript formName="yourForm">[/PHP]

其中,formName是那个FormBean的名字,相应的,return validateXXX(this) “XXX”也是这个名字。

OK,就这样了,你试试看!
 楼主| 发表于 2005-5-15 14:28:16 | 显示全部楼层
一个分析validation验证规则的例子:
[PHP]<field property="lastName" depends="required,mask,maxlength">
  <msg name="mask" key="registrationForm.lastname.maskmsg" />
  <arg key="registrationForm.lastname.displayname" position="0" />
  <arg name="maxlength" key="${var:maxlength}" resource="false" position="1"/>
  <var>
    <var-name>mask</var-name>
    <var-value>^[a-zA-Z]*$</var-value>
  </var>
  <var>
    <var-name>maxlength</var-name>
    <var-value>10</var-value>
  </var>
</field>[/PHP]

Form中有一个字段"lastName",需要实施的验证有三个:required, mask, maxlength
<msg>指明,如果mask规则验证失败了,显示key指定的消息文本,这个消息文本在property文件有定义。
<arg>元素中的“position”属性指明这是对第几个参数设置内容。
<arg>的“name”属性指明这是在对哪条规则设置参数,如果没有指明name,那么就对所有验证规则都设置这个参数。
<arg key="registrationForm.lastname.displayname" position="0" />
这句话的意思是对第0个参数设置“registrationForm.lastname.displayname”所代表的内容。

<arg>元素中的resource属性默认为“true”,如果设置为“false”,那么就使用key属性中的文本消息直接设置参数,而不像前面那样在property文件中按key关键字查找消息内容。

<var>是验证某个字段时定义的内部变量。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-15 14:31:22 | 显示全部楼层
使用中文的properties文件:
1 在一个临时文件(比如"temp.properties")中,用中文书写“名值对”
2 在命令行中,使用jdk自带的命令:native2ascii -encoding gb2312 temp.properties MessageResources_zh_CN.properties
3 原来临时文件的中文内容,变成了如下的形式:
        errors.required={0} \u5fc5\u987b\u586b\u5199.

注意,Tomcat寻找property文件的顺序(如果你的浏览器locale是“中文”的):
1 MessageResources_zh_CN.properties
2 MessageResources_zh.properties
3 MessageResources.properties
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表