`
少女杀手
  • 浏览: 130130 次
  • 性别: Icon_minigender_1
  • 来自: 约旦河西岸
社区版块
存档分类
最新评论

Struts1.x的validator框架使用

阅读更多

一、配置
    在使用validator校验框架时候先要对工程进行配置,添加validator-rules.xml和validator.xml两个文件,将其放到WEB-INF/目录下(与web.xml文件在同一目录下)
    在struts-config.xml中设置插件:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"     
    value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
value值用来指定验证规则的文件,多个验证规则文件要用逗号分割。
配置验证规则:
Validator框架有两个重要的配置文件:
<1>validation-rules.xml文件,
这个配置文件包好了一组可供应用程序使用的全局验证规则。
这个文件是所有应用程序都使用的,任何Struts应用程序也都能
使用。除非打算修改或扩展这组规则,否则无需修改这个文件!

注意1:需要在资源包(ApplicationResources.properties)中加上一下的“键-值”:
## label
label.userName=User name
label.password=Password
## key-value
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.
## Errors
error.username.required=<li>Your ID is wrong.</li>
error.password.required=<li>Your password is wrong.</li>
errors.header=<h3><font color="red">Validation Error</font></h3>
errors.footer=<hr>

因为,验证出错的时候,系统会自动在资源包中查找对应的错误消息,
比如:required验证规则出现错误时,就会输出“errors.required”的值。

<2>validation.xml文件
这个文件是专门用来验证页面指定的Field。
1)根元素:
validator.xml文件的“根元素(Root)”是form-validation,
意味着整个文件的内容包含在“<form-validation>”和“</form-validation>”之间,

2)元素global:
这个东西包含constant子元素,用来定义一个全局的“验证限制”,
以便在这个文件的其他地方使用这些验证规则。
例如:
     <global>
         <constant>
             <constant-name>userName</constant-name>
             <constant-value>^\s*[\w-]{0,30}$</constant-value>
         </constant>
         <constant>           
             <constant-name>password</constant-name>
             <constant-value>^\s*[.\w@#!$%^*()-]{6,20}\s*$</constant-value>
         </constant>
         <constant>       
             <constant-name>email</constant-name>
             <constant-value>^\s*([A-Za-z0-9]+(\.\w+)*@([\w-]+\.)+\w{2,3})\s*$</constant-value>
         </constant>
     </global>
这个例子就定义了一个全局的验证规则,名字是“zip”,具体的规则由“constant-value”指出。

3)formset元素:
这个可能是这个文件最重要的元素了,
主要负责的就是指定对哪个Field进行验证以及验证规则。
例如:
     <formset>
         <constant>
             <constant-name>zip</constant-name>
             <constant-value>^\d{6}$</constant-value>
         </constant>     
         <form name="userLogin">
             <field
                 property="userName"
                 depends="required,mask,minlength">
                 <arg0 key="label.userName"/>
                 <arg1 name="minlength" key="${var:minlength}" resource="false"/>
                 <var>
                     <var-name>mask</var-name>
                     <var-value>${userName}</var-value>
                 </var>
                 <var>
                     <var-name>minlength</var-name>
                     <var-value>4</var-value>
                 </var>
                 <msg name="mask" key="error.username.required"/>
             </field>
         </form>
     </formset>

 

二、使用
一旦你已经配置了验证器插件,这样它可以加载你的Validator资源,你只需要延长org.apache.struts.validator.action.ValidatorForm而不是org.apache.struts.action.ActionForm。然后当validate方法被调用,操作的从Struts配置name属性用于装载当前窗体的验证。表单元素的名称在确认配置属性应与动作元素的名称属性。

例如:struts-config.xml文件中某个action的配置<action attribute="userForm" name="userForm" path="/User"  validate="true" parameter="o"
    input="/User.do?o=toAdd"
    type="com.struts.action.UserListAction">
   <forward name="toAdd" path="xxx"/>
  </action>
validation.xml文件中配置:<form name="userForm">
此时validation.xml文件中某个form配置要验证的表单,此表单对应struts-config.xml文件中action中name配置为“userForm”的action。
也就是form中的name要和action中的name相同

另一种方法是使用动作映射路径属性。在这种情况下,延长ValidatorActionForm代替的是ValidatorForm。该ValidatorActionForm使用动作元素从Struts配置应符合表单元素的名称在确认配置属性路径属性。

例如:struts-config.xml文件中某个action的配置<action attribute="userForm" name="userForm" path="/User"  validate="true" parameter="o"
    input="/UserList.do?o=toAdd"
    type="com.struts.action.UserListAction">
   <forward name="toAdd" path="xxx"/>
  </action>
validation.xml文件中配置:<form name="/User">
此时validation.xml文件中某个form配置要验证的表单,此表单对应struts-config.xml文件中action中path配置为“/User”的action。
也就是form中的name要和action中的path相同。

常见问题:
1、当一个Action中有多个ActionForward时,而且此时只需要对某个ActionForward进行验证,这时就得要求用到“动作映射路径”配置。
在struts-config.xml为某个action配置多次,而各自的path不同。validation.xml中的form配置要进行验证的action
如下: <action attribute="userForm" name="userForm" path="/User"  validate="true" parameter="o"
           input="/UserList.do o=toAdd"
           type="com.struts.action.UserListAction">
   <forward name="toAdd" path="xxx"/>
       </action>
       <action attribute="userForm" name="userForm" path="/UserEdit"  validate="true" parameter="o"
           input="/UserList.do o=toEdit"
           type="com.struts.action.UserListAction">
   <forward name="toAdd" path="xxx"/>
       </action>
  validation.xml中配置:
     <form name="/UserEdit">....</form>
如果使用的是spring1.2代理,Spring配置文件需要对每个action进行配置。
此时程序执行UserListAction时,只有执行“/UserEdit”相关路径时才会进行校验,执行“/User”时,不会进行校验。
因此对需要校验的ActionForward秩序在访问的时候访问路径由“/User”改为“/UserEdit”即可。
2、action中的input必需指定:input="/UserList.do?o=toAdd",当使用校验框架时,不指定input,程序不能正常执行。
3、<message-resources null="false" parameter="com.struts.ApplicationResources" />
   此配置是配置属性文件。 null="false" 必需指定,否则不会显示错误信息。

4、属性文件配置。
   英文属性文件名:ApplicationResources_en.properties
   中文转码前属性文件名:ApplicationResources_zh.properties
   中文转码后属性文件名:ApplicationResources_zh_CN.properties
   先写好中文转码前属性文件,然后用JDK生成对应的转码后文件。
   命令: 目录 native2ascii -encoding gbk A** A**CN

官方文档地址:http://struts.apache.org/1.3.10/faqs/validator.html
   详细配置信息里面有

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    struts1.x validator框架验证入门例子

    validator框架验证入门例子 struts1.x validator框架验证入门例子

    struts1.x使用common-validator验证框架

    在struts1.x版本中使用validator验证框架实例。

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证的示例

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。

    Commons-Validator经典介绍

    Commons-Validator经典介绍,如果你还不熟悉apache的Commons-Validator或者struts1.x里面的验证框架,看了保证对你有用处!

    spring chm文档

    13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. ...

    Spring 2.0 开发参考手册

    13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. ...

    Spring API

    13.12.1. 建立dispatcher实现注解支持 13.12.2. 使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. 使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.9.1. 配置标签库 13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 ...

    Spring中文帮助文档

    13.12.1. 建立dispatcher实现注解支持 13.12.2. 使用@Controller定义一个控制器 13.12.3. 使用@RequestMapping映射请求 13.12.4. 使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一...

    千方百计笔试题大全

    103、Struts的validate框架是如何验证的? 24 104、说下Struts的设计模式 24 105、spring工作机制及为什么要用? 24 106、HttpSession session = request.getSession() 24 107、getParameter与 getAttribute的区别? ...

    java面试宝典

    103、Struts的validate框架是如何验证的? 24 104、说下Struts的设计模式 24 105、spring工作机制及为什么要用? 24 106、HttpSession session = request.getSession() 24 107、getParameter与 getAttribute的区别? ...

Global site tag (gtag.js) - Google Analytics