WebWork的强大的验证器

webwork提供了强大的验证功能,下边一一介绍一些常用的功能的用法。
一,首先webwork的validator是基于拦截器的,所以首先要配制一下拦截器,默认的拦截器,已经
使用了validator,如果你想定义自己的拦截器组合,记得在你的拦截器的stack中把这句话加入
None.gif < interceptor - ref name = " validation " >
None.gif    
< param name = " excludeMethods " >
None.gif        input,back,cancel,browse
None.gif    
</ param >
None.gif
</ interceptor - ref >
二、是否使用自定义Validator:在一般情况下webwork提供的Validator已经能应付大多数问题,
但是如果你想自己定义,那么记得注册你的验证器(Validator),一个简单的注册办法是
添加一个文件名为 validators.xml 的文件在你的classpath (/WEB-INF/classes) 的根目录下
文件中的内容类似如下:
None.gif < validators >
None.gif    
< validator name = " required "   class = " com.opensymphony.xwork.validator.validators.RequiredFieldValidator " />
None.gif    
< validator name = " requiredstring "   class = " com.opensymphony.xwork.validator.validators.RequiredStringValidator " />
None.gif    
< validator name = " int "   class = " com.opensymphony.xwork.validator.validators.IntRangeFieldValidator " />
None.gif    
< validator name = " double "   class = " com.opensymphony.xwork.validator.validators.DoubleRangeFieldValidator " />
None.gif    
< validator name = " date "   class = " com.opensymphony.xwork.validator.validators.DateRangeFieldValidator " />
None.gif    
< validator name = " expression "   class = " com.opensymphony.xwork.validator.validators.ExpressionValidator " />
None.gif    
< validator name = " fieldexpression "   class = " com.opensymphony.xwork.validator.validators.FieldExpressionValidator " />
None.gif    
< validator name = " email "   class = " com.opensymphony.xwork.validator.validators.EmailValidator " />
None.gif    
< validator name = " url "   class = " com.opensymphony.xwork.validator.validators.URLValidator " />
None.gif    
< validator name = " visitor "   class = " com.opensymphony.xwork.validator.validators.VisitorFieldValidator " />
None.gif    
< validator name = " conversion "   class = " com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator " />
None.gif    
< validator name = " stringlength "   class = " com.opensymphony.xwork.validator.validators.StringLengthFieldValidator " />
None.gif    
< validator name = " regex "   class = " com.opensymphony.xwork.validator.validators.RegexFieldValidator " />
None.gif
</ validators >
注意:
1,validators.xml如果已经定义了,那么它应该在classpath中可以找到.然而如果不需要自定义的校验器,那么这不是必须的.WebWork会自动从发布包里的
xwork jar文件中取得一个事先定义好的校验器集合(com/opensymphony/xwork/validator/validators/default.xml).
浏览ValidatorFactory的static块来了解详细信息
2,如果自定义的校验器被定义了而且创建了一个validators.xml文件并放在classpath中,
记得复制所有其他你需要的预定义的校验器到validators.xml里,如果你不需要注册则不需要.
一旦validators.xml在classpath里被检测到,缺省的 (com/opensymphony/xwork/validator/validators/default.xml)
就不会被装载了.只有没发现自定义 validators.xml的时候才会装载.要小心.这点类似Java中的缺省构造函数
None.gif 三、定义校验规则
None.gif
<! DOCTYPE validators PUBLIC  " -//OpenSymphony Group//XWork Validator 1.0.2//EN "
None.gif       
" http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd " >
None.gif
< validators >
None.gif    
< field name = " name " >
None.gif        
<!-- 必添 -->
None.gif        
< field - validator type = " requiredstring " >
None.gif            
<!-- 是否使用trim -->
None.gif            
< param name = " trim " > true </ param >
None.gif            
<!-- 提示的错误信息 -->
None.gif            
< message > You must enter a name </ message >
None.gif        
</ field - validator >
None.gif    
</ field >
None.gif    
< field name = " currDate " >
None.gif        
< field - validator type = " date " >
None.gif            
<!-- 最小时间 -->
None.gif            
< param name = " min " > 01 / 01 / 2007 </ param >
None.gif            
<!-- 最大时间 -->
None.gif            
< param name = " max " > 02 / 28 / 2007 </ param >
None.gif            
<!-- 提示的错误信息 -->
None.gif            
< message >
None.gif                The date must be between 
01 - 01 - 2007  and  02 - 28 - 2007 .
None.gif            
</ message >
None.gif        
</ field - validator >
None.gif    
</ field >
None.gif    
< field name = " url " >
None.gif        
<!-- short - circuit是否短路检验,类似 && 运算的短路算法 -->
None.gif        
< field - validator type = " required "   short - circuit = " true " >
None.gif            
<!-- 提示的错误信息 -->
None.gif            
< message > You must enter a value  for  url. </ message >
None.gif        
</ field - validator >
None.gif        
<!-- webwork提供的url验证 -->
None.gif        
< field - validator type = " url "   short - circuit = " true " >
None.gif            
<!-- 提示的错误信息 -->
None.gif            
< message > Not a valid url. </ message >
None.gif        
</ field - validator >
None.gif    
</ field >
None.gif    
< field name = " mail " >
None.gif        
< field - validator type = " required " >
None.gif            
< message > You must enter a value  for  邮件. </ message >
None.gif        
</ field - validator >
None.gif        
<!-- mail的验证,验证器由webwork提供 -->
None.gif        
< field - validator type = " email " >
None.gif            
< message > Not a valid 邮件. </ message >
None.gif        
</ field - validator >
None.gif    
</ field >
None.gif    
< field name = " age " >
None.gif        
< field - validator type = " int " >
None.gif            
<!-- 同样的最大最小值 -->
None.gif            
< param name = " min " > 1 </ param >
None.gif            
< param name = " max " > 200 </ param >
None.gif            
< message >
ExpandedBlockStart.gifContractedBlock.gif                
<!-- 注意这里,msn中可以用表达式取出值栈中的值例如$ dot.gif {min} -->
ExpandedBlockStart.gifContractedBlock.gif                Only people ages $
dot.gif {min}  to $ dot.gif {max}  may be  true ,otherwise
None.gif                you are a ghost
None.gif            
</ message >
None.gif        
</ field - validator >
None.gif    
</ field >
None.gif    
< field name = " desc " >
None.gif        
< field - validator type = " requiredstring " >
None.gif            
< param name = " trim " > true </ param >
None.gif            
< message > You must enter a desc </ message >
None.gif        
</ field - validator >
None.gif        
< field - validator type = " stringlength " >
None.gif            
< param name = " minLength " > 1 </ param >
None.gif            
< param name = " maxLength " > 10 </ param >
None.gif            
<!-- 从属性文件中取出my.key显示,如果取不到my.key就显示
None.gif            You must enter a desc length
= 10 (my.key) -->
None.gif            
< message key = " my.key " >
None.gif                You must enter a desc length
= 10 (my.key)
None.gif            
</ message >
None.gif        
</ field - validator >
None.gif        
<!-- 可以使用正则表达式 -->
None.gif        
< field - validator type = " regex " >
None.gif            
< param name = " expression " >
None.gif                
<! [CDATA[([a - z][ 0 - 9 ][A - Z][x])]] >
None.gif            
</ param >
ExpandedBlockStart.gifContractedBlock.gif            
<!-- message可以由固定的字符串,值栈中的值$ dot.gif {desc} 以及通过调用方法取到的
ExpandedBlockStart.gifContractedBlock.gif            属性文件中的值$
dot.gif {getText('my.key')} -->
None.gif            
< message >
None.gif                
" regex error ${getText('my.key')} ${desc} "
None.gif            
</ message >
None.gif        
</ field - validator >
None.gif    
</ field >
None.gif    
<!-- 上边的验证叫字段验证,下边这些验证叫普通验证,普通验证是优于字段验证的。
None.gif    在使用短路的时候要小心
-->
None.gif    
<!-- 上边那些都是基于字段的验证,这个是基于Action的验证
None.gif    如果要在页面显示这些消息,需要加入
< ww:actionError />
None.gif    
-->
None.gif    
< validator type = " expression " >
None.gif        
<!-- 可以基于表达式的验证name.equals(desc) -->
None.gif        
< param name = " expression " > name.equals(desc) </ param >
None.gif        
< message > name not the same as desc </ message >
None.gif    
</ validator >
None.gif    
<!--  Plain Validator  2   -->
None.gif    
<!-- 可以基于表达式的验证mail.startsWith( ' mark ' ) -->
None.gif    
< validator type = " expression "   short - circuit = " true " >
None.gif        
< param name = " expression " > mail.startsWith( ' mark ' ) </ param >
None.gif        
< message > Email does not start with mark </ message >
None.gif    
</ validator >
None.gif
</ validators >
四、客户端验证
加入validate="true"
<ww:form name="test" action="javascriptValidation" validate="true">
  ...
</ww:form>
这样的话webwork会根据你的服务器端的验证,对应生成javaScript的验证,而且提示信息和服务器端
验证的方式一样,而不是alert的方式显示。(前题是你使用的都是标准的验证器)
五、
对应上边验证器的web页面
None.gif <% @page contentType = " text/html; charset=UTF-8 "  pageEncoding = " UTF-8 " %>
None.gif
<% @ taglib prefix = " ww "  uri = " /webwork " %>
None.gif
<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
None.gif
< html >
None.gif    
< head >
None.gif        
< title ></ title >
None.gif        
< ww:head  />
None.gif    
</ head >
None.gif    
< body >
None.gif        
<!--   
None.gif        如果想统一的显示所有的Erro打开下边这句
None.gif        
< ww:fielderror  />
None.gif        如果想显示其中一个Error打开下边这句,默认显示在字段的正上方
None.gif        
< ww:fielderror >
None.gif            
< ww:param value = " %{'name'} "   />
None.gif        
</ ww:fielderror >
None.gif        
< ww:fielderror >
None.gif            
< ww:param > desc </ ww:param >
None.gif        
</ ww:fielderror >
None.gif         
-->
None.gif        
< ww:form name = " test "  namespace = " / "  action = " DbAdmin "  method = " post "  validate = " true " >
None.gif            
< ww:actionmessage  />
None.gif            
< ww:actionerror />
None.gif            
< ww:textfield label = " name "  name = " name "   />
None.gif            
< ww:date id = " strCurrDate "  name = " currDate "  format = " yyyy-MM-dd "   />
None.gif            
< ww:datepicker name = " currDate "
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值