struts validator验证框架

1、配置:
* 加入国际化配置在struts-config.xml文件中,如:
 <message-resources parameter="MessageResources" />
* 提供国际化资源文件
* 引入validator插件在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>
  * 提供validation.xml和validator_rules.xml文件,将此文件拷贝到WEB-INF下

自己的ActionForm应该是DynaValidatorForm

public class LoginAction extends Action {
    public ActionForward execute(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {
DynaValidatorForm loginForm = (DynaValidatorForm)form;
String username = (String)loginForm.get("username");
String password = (String)loginForm.get("password");

return mapping.findForward("success");
}


}


2、validator服务器端验证
* 配置validation.xml文件


3、validator客户端验证(javascript)
  * 配置validation.xml文件

* 在jsp页面中包含< html:javascript> 

如:<html:javascript formName="loginForm"/>

* 对需要验证的表单定义onsubmit事件,其中事件名称为validate+ActionForm的名称,如:validateLoginForm

说明,使用验证框架是和国际化绑在一起的 

Validator框架不能用于验证标准的org.apache.struts.action.ActionForm类。如果要使用Validator框架应该采用ActionForm类的两个子类:DynavalidatorForm和ValidatorForm。 

validator-rules.xml文件中的说明:

 <validator name="required"
            classname="org.apache.struts.validator.FieldChecks"
               method="validateRequired"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       org.apache.commons.validator.Validator,
                       javax.servlet.http.HttpServletRequest"
                  msg="errors.required"/>这个msg即是说当没有验证通过时,要输出的在国际化资源文件中的key


validation.xml文件类似如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0.1//EN"   
  3. "validator_1_0_1.dtd" >  
  4. <!-- 检验规则文件的根元素 -->  
  5. <form-validation>  
  6.     <!-- 所需要校验的form都放在formset元素里面 -->  
  7.     <formset>  
  8.         <!-- 定义需要校验的表单,此处的name必须与struts-config.xml中定义的FormBean的名字一致 -->  
  9.         <form name="loginActionForm">  
  10.             <!-- 每个field元素定义一个表单域,即要验证的字段;必须满足怎样的规则 -->  
  11.             <field property="username" depends="required">  
  12.                 <!-- field:要验证的字段,即属性,depends:依赖的验证规则 -->  
  13.                 <arg0 key="loginActionForm.login" />  
  14.                 <!-- arg0:在资源包中配置错误消息的{0}参数值 -->  
  15.             </field>  
  16.             <field property="password" depends="required,minlength">  
  17.                 <!-- 多个验证规则用逗号分割 -->  
  18.                 <arg0 key="loginActionForm.password" />  
  19.                 <arg1 name="minlength" key="#{var:minlength}" resource="false" />  
  20.                 <!-- resource:false该key的值不在资源包中给出,而是在本文件给 -->  
  21.                 <var>  
  22.                     <!-- 定义变量,给上面的key所用 -->  
  23.                     <var-name>minlength</var-name>  
  24.                     <var-value>5</var-value>  
  25.                 </var>  
  26.             </field>  
  27.         </form>  
  28.     </formset>  
  29. </form-validation>  

资源文件类似如下:

  1. # -- standard errors --  
  2. username=username  
  3. password=password  
  4. login=submit  
  5. noname=please enter name  
  6. nopassword=please  enter password  
  7.   
  8. # Struts Validator Error Messages  
  9. errors.required={0} is required.  
  10. errors.minlength={0} can not be less than {1} characters.  
  11. errors.maxlength={0} can not be greater than {1} characters.  
  12. errors.invalid={0} is invalid.  
  13.   
  14. errors.byte={0} must be a byte.  
  15. errors.short={0} must be a short.  
  16. errors.integer={0} must be an integer.  
  17. errors.long={0} must be a long.  
  18. errors.float={0} must be a float.  
  19. errors.double={0} must be a double.  
  20.   
  21. errors.date={0} is not a date.  
  22. errors.range={0} is not in the range {1} through {2}.  
  23. errors.creditcard={0} is an invalid credit card number.  
  24. errors.email={0} is an invalid e-mail address.  
  25.   
  26. #loginForm   
  27. loginActionForm.login=username  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjsuge

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值