`
dreamstone
  • 浏览: 289037 次
  • 来自: ...
文章分类
社区版块
存档分类

WebWork的强大的验证器

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

相关推荐

    Webwork 的 验证 客服端 和 服务器段 数据验证

    Webwork 提供了一套强大的验证机制,包括ActionForm中的 validate() 方法和 interceptors(拦截器)。这些验证方法可以对所有字段进行复杂规则的检查,例如数据库约束、业务逻辑规则等。服务器端验证确保了即使...

    webwork-register.rar_webwork_webwork 验证_webwork spring

    WebWork的核心特性包括强大的动作调度、类型安全的参数绑定、拦截器机制以及丰富的异常处理。在"webwork-register"这个项目中,WebWork可能用于处理用户注册过程中的各种操作,如表单提交、数据验证和业务逻辑处理。...

    解决webwork客户端验证提示信息重复多次显示问题

    WebWork是一个流行的Java Web框架,它提供了强大的动作框架和验证机制。然而,在实际应用中,有时可能会遇到一个问题,即客户端验证提示信息会重复多次显示,这不仅影响用户体验,也可能暴露出潜在的代码问题。本文...

    webwork验证框架

    验证文件是一个独立的XML配置文件,它定义了验证规则和对应的验证器。这种分离使得开发者能够在不修改源代码的情况下,通过修改XML配置文件来添加、删除或修改验证规则。这提高了代码的可维护性和灵活性。 2. **...

    webwork拦截器,验证,以及帮助文档

    本篇将详细介绍WebWork中的核心概念——拦截器(Interceptor)以及验证(Validation)机制,并结合提供的帮助文档进行学习指导。 首先,我们来理解WebWork的拦截器机制。在WebWork中,拦截器是处理请求的关键组件,...

    WEBWORK

    WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制和丰富的验证功能,帮助开发者构建可维护、可扩展的 Web 应用程序。 在 WebWork 中,配置是至关重要的,因为它定义了框架如何工作...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化支持以及强大的视图渲染机制。在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于...

    webwork

    3. **拦截器(Interceptors)**:WebWork 使用拦截器来执行一些预处理或后处理任务,如权限验证、日志记录等。拦截器可以在Action执行前后插入自定义逻辑,增强了系统功能的灵活性。 4. **异常处理**:WebWork 提供...

    WebWork2.0讲解说明

    3. Interceptors(拦截器):拦截器是WebWork2.0的一个强大功能,允许在Action调用前后插入自定义逻辑,如权限验证、日志记录等。 二、WebWork2.0主要特性 1. 智能表单绑定:WebWork2.0支持自动将HTTP请求参数绑定...

    WebWork教程开发资料

    WebWork作为一个强大的Web开发框架,它简化了Java Web应用的开发过程,通过提供动作(Action)和控制器(Controller)的概念,将业务逻辑、数据处理和用户界面进行了清晰的分离。WebWork的特点包括强大的表单处理...

    Webwork2开发指南

    Webwork2 提供了强大的数据绑定功能,允许开发者将表单字段直接映射到动作类的属性,极大地简化了输入验证和数据处理。通过注解或XML配置,可以定义数据类型的转换器和验证规则。 **4. 异常处理** Webwork2 具有...

    WebWork教程

    WebWork的拦截器(Interceptor)框架和验证框架也是教程的重要内容,它们允许开发者在运行时添加额外的行为和验证逻辑。 WebWork还强调了与其他开源项目集成的能力,如Spring、Hibernate和Xml-RPC。这些集成让...

    webWork2开发指南

    3. **Interceptors(拦截器)**:WebWork2引入了拦截器的概念,它们在Action执行前后执行,可以用于日志记录、事务管理、权限验证等。拦截器的使用使得代码更易于组织和复用。 4. **动态方法调用(Dynamic Method ...

    webwork2开发指南

    2. 数据验证(Validation):WebWork2提供了强大的数据验证机制,可以通过注解或XML配置文件定义验证规则,确保输入数据的有效性。 3. 国际化与本地化(i18n/L10n):WebWork2支持多语言环境,通过资源文件管理不同...

    webwork详细讲解.doc

    Xwork提供了一系列核心功能,例如前端拦截器(Interceptor)、运行时表单属性验证、类型转换、强大的表达式语言(OGNL——对象图表示法语言)、依赖注入(IoC)容器等。 - **WebWork2**:建立在Xwork基础之上,主要...

    webwork中文参考手册

    4. **强大的表单处理**:WebWork提供了强大的表单绑定和验证功能,可以直接将表单数据绑定到Java对象,同时进行验证。 5. **强大的异常处理**:框架能够优雅地处理异常,将异常信息转化为用户友好的错误页面,提高...

    WebWork docs 2 -- webWork 详细的说明文档

    WebWork是一个基于Java的轻量级MVC(Model-View-Controller)框架,它为构建高性能、可维护的Web应用程序提供了强大的支持。WebWork docs 2 是一套完整的WebWork框架的详细说明文档,包含了开发者在使用WebWork时...

    webwork_框架文档

    WebWork提供了许多先进的特性,如动作拦截器、类型转换、强大的异常处理机制以及对AJAX的支持,这些都使得开发更高效、更易于维护。 在WebWork框架中,`Action`是核心组件,它负责处理用户请求并执行业务逻辑。每个...

Global site tag (gtag.js) - Google Analytics