WebWork2.2新特性(一):数据校验 validator

WebWork2.2新特性(一):数据校验 validator
WebWork2.2中去掉了原来的JavaScript支持,使用AJAX和DWR进行客户端校验.
DWR最新版本为1.0RC3a(2005-8-29),Webwork里面带的是0.6的版本.
如果使用客户端校验,首先在Web.xml里配置DWR:

代码
  1.     
  2. <servlet>  
  3.         <servlet-name>dwr</servlet-name>  
  4.         <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  
  5.         <init-param>  
  6.             <param-name>debug</param-name>  
  7.             <param-value>true</param-value>  
  8.         </init-param>  
  9.     </servlet>  
  10.     <servlet-mapping>  
  11.         <servlet-name>dwr</servlet-name>  
  12.         <url-pattern>/dwr/*</url-pattern>  
  13. </servlet-mapping>    
<script>render_code();</script>

 

validators.xml的写法和原来一样,不过就是不能用原来的JavaScript的校验了(如果使用默认的validator,不需要这个文件)

代码
  1. <validators>    
  2.     <validator name="required"    
  3.         class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>  
  4.            
  5.     <validator name="requiredstring"  
  6.         class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>  
  7.   
  8.     <validator name="stringlength"    
  9.      class="com.opensymphony.xwork.validator.validators.StringLengthFieldValidator"/>         
  10. </validators>  
<script>render_code();</script>
对action的校验规则写法也是和原来一样,例如增加新闻的校验如下:
代码
  1. <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">  
  2. <validators>  
  3.  <field name="news.title">  
  4.   <field-validator type="requiredstring">  
  5.    <message>请输入标题</message>  
  6.   </field-validator>  
  7.  </field>    
  8.  <field name="news.content">  
  9.   <field-validator type="requiredstring">  
  10.    <message>请输入内容</message>  
  11.   </field-validator>  
  12.  </field>  
  13.     
  14. </validators>      
<script>render_code();</script>
在页面的Form标签中写上validate="true" (注意使用的是alt syntax语法)表示需要进行客户端校验,
如果不写validate="true"则不需要进行客户端校验,仅进行服务器端校验,这就和DWR无关了,和以前的客户端校验一样.
<ww:form action="doAddNews" method="post" name="doAddNews" validate="true">


还需要在WEB-INF下面增加一个dwr.xml配置DWR,如果使用webwork自带的dwr,格式如下
代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN" "http://www.getahead.ltd.uk/dwr/dwr.dtd">  
  4. <dwr>  
  5.     <allow>  
  6.         <create creator="new" javascript="validator" class="com.opensymphony.webwork.validators.DWRValidator"/>  
  7.         <convert converter="bean" match="com.opensymphony.xwork.ValidationAwareSupport"/>  
  8.     </allow>  
  9. </dwr>     
<script>render_code();</script>
如果使用DWR 1.0r3a(用新的版本不知道有没有问题),格式如下:
代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">  
  3. <dwr>  
  4.  <allow>  
  5.   <create creator="new" javascript="validator" >  
  6.   <param name="class" value="com.opensymphony.webwork.validators.DWRValidator" />  
  7.   </create>  
  8.   <convert converter="bean" match="com.opensymphony.xwork.ValidationAwareSupport"/>  
  9.  </allow>  
  10. </dwr>     
<script>render_code();</script>

(注:一定要使用匹配dwr和dwr.xml,否则会报错)

 

通过查看页面Html源码,我们可以看到页面中包含了/webwork和/dwr的路径,这些路径由Webwork和DWR自动生成文件返回,避免了在每个项目中复制重复的文件.

代码
  1. <script src="/ww22test/webwork/validationClient.js"></script>  
  2. <script src="/ww22test/dwr/interface/validator.js"></script>  
  3. <script src="/ww22test/dwr/engine.js"></script>  
  4. <script src="/ww22test/webwork/template/xhtml/validation.js"></script>     
<script>render_code();</script>
其中字段使用onblur来进行调用校验:
<input type="text" name="news.title" value="" id="doAddNews_news.title" οnblur="validate(this);"/>
至此,Webwork的客户端校验可以运行起来了.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值