网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  webwork的强大的验证器     
  文章作者:未知  文章来源:水木森林  
  查看:111次  录入:管理员--2007-11-17  
 
  webwork提供了强大的验证功能,下边一一介绍一些常用的功能的用法。
一,首先webwork的validator是基于拦截器的,所以首先要配制一下拦截器,默认的拦截器,已经
使用了validator,如果你想定义自己的拦截器组合,记得在你的拦截器的stack中把这句话加入
webwork的强大的验证器(图一)<interceptor-ref name="validation">
webwork的强大的验证器(图一)    <param name="excludemethods">
webwork的强大的验证器(图一)        input,back,cancel,browse
webwork的强大的验证器(图一)    </param>
webwork的强大的验证器(图一)</interceptor-ref>
二、是否使用自定义validator:在一般情况下webwork提供的validator已经能应付大多数问题,
但是如果你想自己定义,那么记得注册你的验证器(validator),一个简单的注册办法是
添加一个文件名为 validators.xml 的文件在你的classpath (/web-inf/classes) 的根目录下
文件中的内容类似如下:
webwork的强大的验证器(图一)<validators>
webwork的强大的验证器(图一)    <validator name="required" class="com.opensymphony.xwork.validator.validators.requiredfieldvalidator"/>
webwork的强大的验证器(图一)    <validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.requiredstringvalidator"/>
webwork的强大的验证器(图一)    <validator name="int" class="com.opensymphony.xwork.validator.validators.intrangefieldvalidator"/>
webwork的强大的验证器(图一)    <validator name="double" class="com.opensymphony.xwork.validator.validators.doublerangefieldvalidator"/>
webwork的强大的验证器(图一)    <validator name="date" class="com.opensymphony.xwork.validator.validators.daterangefieldvalidator"/>
webwork的强大的验证器(图一)    <validator name="expression" class="com.opensymphony.xwork.validator.validators.expressionvalidator"/>
webwork的强大的验证器(图一)    <validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.fieldexpressionvalidator"/>
webwork的强大的验证器(图一)    <validator name="email" class="com.opensymphony.xwork.validator.validators.emailvalidator"/>
webwork的强大的验证器(图一)    <validator name="url" class="com.opensymphony.xwork.validator.validators.urlvalidator"/>
webwork的强大的验证器(图一)    <validator name="visitor" class="com.opensymphony.xwork.validator.validators.visitorfieldvalidator"/>
webwork的强大的验证器(图一)    <validator name="conversion" class="com.opensymphony.xwork.validator.validators.conversionerrorfieldvalidator"/>
webwork的强大的验证器(图一)    <validator name="stringlength" class="com.opensymphony.xwork.validator.validators.stringlengthfieldvalidator"/>
webwork的强大的验证器(图一)    <validator name="regex" class="com.opensymphony.xwork.validator.validators.regexfieldvalidator"/>
webwork的强大的验证器(图一)</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中的缺省构造函数


webwork的强大的验证器(图一)三、定义校验规则
webwork的强大的验证器(图一)<!doctype validators public "-//opensymphony group//xwork validator 1.0.2//en"
webwork的强大的验证器(图一)       "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
webwork的强大的验证器(图一)<validators>
webwork的强大的验证器(图一)    <field name="name">
webwork的强大的验证器(图一)        <!--必添-->
webwork的强大的验证器(图一)        <field-validator type="requiredstring">
webwork的强大的验证器(图一)            <!--是否使用trim-->
webwork的强大的验证器(图一)            <param name="trim">true</param>
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>you must enter a name</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="currdate">
webwork的强大的验证器(图一)        <field-validator type="date">
webwork的强大的验证器(图一)            <!--最小时间-->
webwork的强大的验证器(图一)            <param name="min">01/01/2007</param>
webwork的强大的验证器(图一)            <!--最大时间-->
webwork的强大的验证器(图一)            <param name="max">02/28/2007</param>
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图一)                the date must be between 01-01-2007 and 02-28-2007.
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="url">
webwork的强大的验证器(图一)        <!--short-circuit是否短路检验,类似&&运算的短路算法-->
webwork的强大的验证器(图一)        <field-validator type="required" short-circuit="true">
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>you must enter a value for url.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--webwork提供的url验证-->
webwork的强大的验证器(图一)        <field-validator type="url" short-circuit="true">
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>not a valid url.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="mail">
webwork的强大的验证器(图一)        <field-validator type="required">
webwork的强大的验证器(图一)            <message>you must enter a value for 邮件.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--mail的验证,验证器由webwork提供-->
webwork的强大的验证器(图一)        <field-validator type="email">
webwork的强大的验证器(图一)            <message>not a valid 邮件.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="age">
webwork的强大的验证器(图一)        <field-validator type="int">
webwork的强大的验证器(图一)            <!--同样的最大最小值-->
webwork的强大的验证器(图一)            <param name="min">1</param>
webwork的强大的验证器(图一)            <param name="max">200</param>
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图二)webwork的强大的验证器(图三)                <!--注意这里,msn中可以用表达式取出值栈中的值例如$webwork的强大的验证器(图四){min}-->
webwork的强大的验证器(图二)webwork的强大的验证器(图三)                only people ages $webwork的强大的验证器(图四){min} to $webwork的强大的验证器(图四){max} may be true,otherwise
webwork的强大的验证器(图一)                you are a ghost
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="desc">
webwork的强大的验证器(图一)        <field-validator type="requiredstring">
webwork的强大的验证器(图一)            <param name="trim">true</param>
webwork的强大的验证器(图一)            <message>you must enter a desc</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <field-validator type="stringlength">
webwork的强大的验证器(图一)            <param name="minlength">1</param>
webwork的强大的验证器(图一)            <param name="maxlength">10</param>
webwork的强大的验证器(图一)            <!--从属性文件中取出my.key显示,如果取不到my.key就显示
webwork的强大的验证器(图一)            you must enter a desc length=10(my.key)-->
webwork的强大的验证器(图一)            <message key="my.key">
webwork的强大的验证器(图一)                you must enter a desc length=10(my.key)
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--可以使用正则表达式-->
webwork的强大的验证器(图一)        <field-validator type="regex">
webwork的强大的验证器(图一)            <param name="expression">
webwork的强大的验证器(图一)                <![cdata[([a-z][0-9][a-z][x])]]>
webwork的强大的验证器(图一)            </param>
webwork的强大的验证器(图二)webwork的强大的验证器(图三)            <!--message可以由固定的字符串,值栈中的值$webwork的强大的验证器(图四){desc}以及通过调用方法取到的
webwork的强大的验证器(图二)webwork的强大的验证器(图三)            属性文件中的值$webwork的强大的验证器(图四){gettext('my.key')}-->
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图一)                "regex error ${gettext('my.key')} ${desc}"
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <!--上边的验证叫字段验证,下边这些验证叫普通验证,普通验证是优于字段验证的。
webwork的强大的验证器(图一)    在使用短路的时候要小心-->
webwork的强大的验证器(图一)    <!--上边那些都是基于字段的验证,这个是基于action的验证
webwork的强大的验证器(图一)    如果要在页面显示这些消息,需要加入<ww:actionerror/>
webwork的强大的验证器(图一)    -->
webwork的强大的验证器(图一)    <validator type="expression">
webwork的强大的验证器(图一)        <!--可以基于表达式的验证name.equals(desc)-->
webwork的强大的验证器(图一)        <param name="expression">name.equals(desc)</param>
webwork的强大的验证器(图一)        <message>name not the same as desc</message>
webwork的强大的验证器(图一)    </validator>
webwork的强大的验证器(图一)    <!-- plain validator 2 -->
webwork的强大的验证器(图一)    <!--可以基于表达式的验证mail.startswith('mark')-->
webwork的强大的验证器(图一)    <validator type="expression" short-circuit="true">
webwork的强大的验证器(图一)        <param name="expression">mail.startswith('mark')</param>
webwork的强大的验证器(图一)        <message>email does not start with mark</message>
webwork的强大的验证器(图一)    </validator>
webwork的强大的验证器(图一)</validators>

四、客户端验证
加入validate="true"
<ww:form name="test" action="javascriptvalidation" validate="true">
  ...
</ww:form>
这样的话webwork会根据你的服务器端的验证,对应生成javascript的验证,而且提示信息和服务器端
验证的方式一样,而不是alert的方式显示。(前题是你使用的都是标准的验证器)
五、
对应上边验证器的web页面


webwork的强大的验证器(图一)<%@page contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
webwork的强大的验证器(图一)<%@ taglib prefix="ww" uri="/webwork"%>
webwork的强大的验证器(图一)<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
webwork的强大的验证器(图一)<html>
webwork的强大的验证器(图一)    <head>
webwork的强大的验证器(图一)        <title></title>
webwork的强大的验证器(图一)        <ww:head />
webwork的强大的验证器(图一)    </head>
webwork的强大的验证器(图一)    <body>
webwork的强大的验证器(图一)        <!--  
webwork的强大的验证器(图一)        如果想统一的显示所有的erro打开下边这句
webwork的强大的验证器(图一)        <ww:fielderror />
webwork的强大的验证器(图一)        如果想显示其中一个error打开下边这句,默认显示在字段的正上方
webwork的强大的验证器(图一)        <ww:fielderror>
webwork的强大的验证器(图一)            <ww:param value="%{'name'}" />
webwork的强大的验证器(图一)        </ww:fielderror>
webwork的强大的验证器(图一)        <ww:fielderror>
webwork的强大的验证器(图一)            <ww:param>desc</ww:param>
webwork的强大的验证器(图一)        </ww:fielderror>
webwork的强大的验证器(图一)         -->
webwork的强大的验证器(图一)        <ww:form name="test" namespace="/" action="dbadmin" method="post" validate="true">
webwork的强大的验证器(图一)            <ww:actionmessage />
webwork的强大的验证器(图一)            <ww:actionerror/>
webwork的强大的验证器(图一)            <ww:textfield label="name" name="name" />
webwork的强大的验证器(图一)            <ww:date id="strcurrdate" name="currdate" format="yyyy-mm-dd" />
webwork的强大的验证器(图一)            <ww:datepicker name="currdate" id="currdate" showstime="true"
webwork的强大的验证器(图一)                format="%y-%m-%e %h:%m" cssclass="tx" language="zh" required="true"
webwork的强大的验证器(图一)                template="datepicker.ftl" label="currdate" value="%{strcurrdate}" >
webwork的强大的验证器(图一)            </ww:datepicker>
webwork的强大的验证器(图一)            <ww:textfield label="url" name="url" />
webwork的强大的验证器(图一)            <ww:textfield label="mail" name="mail" />
webwork的强大的验证器(图一)            <ww:textfield label="age" name="age" />
webwork的强大的验证器(图一)            <ww:textfield label="desc" name="desc" />
webwork的强大的验证器(图一)            <ww:submit action="dbadmin" method="dotestvalidator"
webwork的强大的验证器(图一)                value="dotestvalidator" />
webwork的强大的验证器(图一)        </ww:form>
webwork的强大的验证器(图一)    </body>
webwork的强大的验证器(图一)</html>
webwork的强大的验证器(图一)六、对应上边的action代码
webwork的强大的验证器(图一)package niis.web.actions.temp;
webwork的强大的验证器(图一)
webwork的强大的验证器(图一)import java.text.simpledateformat;
webwork的强大的验证器(图一)import java.util.date;
webwork的强大的验证器(图一)
webwork的强大的验证器(图一)import niis.persistence.itestdao;
webwork的强大的验证器(图一)import niis.persistence.dao.sqlcommand;
webwork的强大的验证器(图一)import niis.web.actions.abstractaction;
webwork的强大的验证器(图一)
webwork的强大的验证器(图二)webwork的强大的验证器(图三)public class dbadminaction webwork的强大的验证器(图四){
webwork的强大的验证器(图五)    private string name;
webwork的强大的验证器(图五)    private date currdate ;
webwork的强大的验证器(图五)    private string url;
webwork的强大的验证器(图五)    private string mail;
webwork的强大的验证器(图五)    private int age;
webwork的强大的验证器(图五)    private string desc;
webwork的强大的验证器(图五)    
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public string dotestvalidator()webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        system.out.println(name);
webwork的强大的验证器(图五)        system.out.println(currdate);
webwork的强大的验证器(图五)        system.out.println(url);
webwork的强大的验证器(图五)        system.out.println(mail);
webwork的强大的验证器(图五)        system.out.println(age);
webwork的强大的验证器(图五)        return success;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @return the age
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public int getage() webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        return age;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @param age the age to set
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public void setage(int age) webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        this.age = age;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @return the date
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public date getcurrdate() webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        return currdate;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @param date the date to set
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public void setcurrdate(date date) webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        this.currdate = date;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @return the mail
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public string getmail() webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        return mail;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @param mail the mail to set
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public void setmail(string mail) webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        this.mail = mail;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @return the name
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public string getname() webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        return name;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @param name the name to set
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public void setname(string name) webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        this.name = name;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @return the url
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public string geturl() webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        return url;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @param url the url to set
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public void seturl(string url) webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        this.url = url;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @return the testdao
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public itestdao gettestdao() webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        return testdao;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @return the desc
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public string getdesc() webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        return desc;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    /** *//**
webwork的强大的验证器(图五)     * @param desc the desc to set
webwork的强大的验证器(图八)     */
webwork的强大的验证器(图六)webwork的强大的验证器(图七)    public void setdesc(string desc) webwork的强大的验证器(图四){
webwork的强大的验证器(图五)        this.desc = desc;
webwork的强大的验证器(图八)    }
webwork的强大的验证器(图九)}

七、简单提示:属性文件的名字类名+properties,validator配制文件的名字类名+validation.xml
(还有其它的组合方式)
例如对应的dbadminaction.java
dbadminaction-validation.xml
dbadminaction.properties
注意
许多webwork 标签的 required 属性和客户端校验没有什么关系. 它只是在某个theme(例如xhtml)中用来在一个标识为必填的字段周围放置一个'*'.

八、上边程序的示例代码(从eclipse导出的工程)
http://www.blogjava.net/files/dreamstone/vl.rar


webwork的强大的验证器(图一)三、定义校验规则
webwork的强大的验证器(图一)<!doctype validators public "-//opensymphony group//xwork validator 1.0.2//en"
webwork的强大的验证器(图一)       "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
webwork的强大的验证器(图一)<validators>
webwork的强大的验证器(图一)    <field name="name">
webwork的强大的验证器(图一)        <!--必添-->
webwork的强大的验证器(图一)        <field-validator type="requiredstring">
webwork的强大的验证器(图一)            <!--是否使用trim-->
webwork的强大的验证器(图一)            <param name="trim">true</param>
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>you must enter a name</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="currdate">
webwork的强大的验证器(图一)        <field-validator type="date">
webwork的强大的验证器(图一)            <!--最小时间-->
webwork的强大的验证器(图一)            <param name="min">01/01/2007</param>
webwork的强大的验证器(图一)            <!--最大时间-->
webwork的强大的验证器(图一)            <param name="max">02/28/2007</param>
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图一)                the date must be between 01-01-2007 and 02-28-2007.
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="url">
webwork的强大的验证器(图一)        <!--short-circuit是否短路检验,类似&&运算的短路算法-->
webwork的强大的验证器(图一)        <field-validator type="required" short-circuit="true">
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>you must enter a value for url.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--webwork提供的url验证-->
webwork的强大的验证器(图一)        <field-validator type="url" short-circuit="true">
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>not a valid url.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="mail">
webwork的强大的验证器(图一)        <field-validator type="required">
webwork的强大的验证器(图一)            <message>you must enter a value for 邮件.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--mail的验证,验证器由webwork提供-->
webwork的强大的验证器(图一)        <field-validator type="email">
webwork的强大的验证器(图一)            <message>not a valid 邮件.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="age">
webwork的强大的验证器(图一)        <field-validator type="int">
webwork的强大的验证器(图一)            <!--同样的最大最小值-->
webwork的强大的验证器(图一)            <param name="min">1</param>
webwork的强大的验证器(图一)            <param name="max">200</param>
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图二)webwork的强大的验证器(图三)                <!--注意这里,msn中可以用表达式取出值栈中的值例如$webwork的强大的验证器(图四){min}-->
webwork的强大的验证器(图二)webwork的强大的验证器(图三)                only people ages $webwork的强大的验证器(图四){min} to $webwork的强大的验证器(图四){max} may be true,otherwise
webwork的强大的验证器(图一)                you are a ghost
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="desc">
webwork的强大的验证器(图一)        <field-validator type="requiredstring">
webwork的强大的验证器(图一)            <param name="trim">true</param>
webwork的强大的验证器(图一)            <message>you must enter a desc</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <field-validator type="stringlength">
webwork的强大的验证器(图一)            <param name="minlength">1</param>
webwork的强大的验证器(图一)            <param name="maxlength">10</param>
webwork的强大的验证器(图一)            <!--从属性文件中取出my.key显示,如果取不到my.key就显示
webwork的强大的验证器(图一)            you must enter a desc length=10(my.key)-->
webwork的强大的验证器(图一)            <message key="my.key">
webwork的强大的验证器(图一)                you must enter a desc length=10(my.key)
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--可以使用正则表达式-->
webwork的强大的验证器(图一)        <field-validator type="regex">
webwork的强大的验证器(图一)            <param name="expression">
webwork的强大的验证器(图一)                <![cdata[([a-z][0-9][a-z][x])]]>
webwork的强大的验证器(图一)            </param>
webwork的强大的验证器(图二)webwork的强大的验证器(图三)            <!--message可以由固定的字符串,值栈中的值$webwork的强大的验证器(图四){desc}以及通过调用方法取到的
webwork的强大的验证器(图二)webwork的强大的验证器(图三)            属性文件中的值$webwork的强大的验证器(图四){gettext('my.key')}-->
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图一)                "regex error ${gettext('my.key')} ${desc}"
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <!--上边的验证叫字段验证,下边这些验证叫普通验证,普通验证是优于字段验证的。
webwork的强大的验证器(图一)    在使用短路的时候要小心-->
webwork的强大的验证器(图一)    <!--上边那些都是基于字段的验证,这个是基于action的验证
webwork的强大的验证器(图一)    如果要在页面显示这些消息,需要加入<ww:actionerror/>
webwork的强大的验证器(图一)    -->
webwork的强大的验证器(图一)    <validator type="expression">
webwork的强大的验证器(图一)        <!--可以基于表达式的验证name.equals(desc)-->
webwork的强大的验证器(图一)        <param name="expression">name.equals(desc)</param>
webwork的强大的验证器(图一)        <message>name not the same as desc</message>
webwork的强大的验证器(图一)    </validator>
webwork的强大的验证器(图一)    <!-- plain validator 2 -->
webwork的强大的验证器(图一)    <!--可以基于表达式的验证mail.startswith('mark')-->
webwork的强大的验证器(图一)    <validator type="expression" short-circuit="true">
webwork的强大的验证器(图一)        <param name="expression">mail.startswith('mark')</param>
webwork的强大的验证器(图一)        <message>email does not start with mark</message>
webwork的强大的验证器(图一)    </validator>
webwork的强大的验证器(图一)</validators>

webwork的强大的验证器(图一)三、定义校验规则
webwork的强大的验证器(图一)<!doctype validators public "-//opensymphony group//xwork validator 1.0.2//en"
webwork的强大的验证器(图一)       "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
webwork的强大的验证器(图一)<validators>
webwork的强大的验证器(图一)    <field name="name">
webwork的强大的验证器(图一)        <!--必添-->
webwork的强大的验证器(图一)        <field-validator type="requiredstring">
webwork的强大的验证器(图一)            <!--是否使用trim-->
webwork的强大的验证器(图一)            <param name="trim">true</param>
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>you must enter a name</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="currdate">
webwork的强大的验证器(图一)        <field-validator type="date">
webwork的强大的验证器(图一)            <!--最小时间-->
webwork的强大的验证器(图一)            <param name="min">01/01/2007</param>
webwork的强大的验证器(图一)            <!--最大时间-->
webwork的强大的验证器(图一)            <param name="max">02/28/2007</param>
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图一)                the date must be between 01-01-2007 and 02-28-2007.
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="url">
webwork的强大的验证器(图一)        <!--short-circuit是否短路检验,类似&&运算的短路算法-->
webwork的强大的验证器(图一)        <field-validator type="required" short-circuit="true">
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>you must enter a value for url.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--webwork提供的url验证-->
webwork的强大的验证器(图一)        <field-validator type="url" short-circuit="true">
webwork的强大的验证器(图一)            <!--提示的错误信息-->
webwork的强大的验证器(图一)            <message>not a valid url.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="mail">
webwork的强大的验证器(图一)        <field-validator type="required">
webwork的强大的验证器(图一)            <message>you must enter a value for 邮件.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--mail的验证,验证器由webwork提供-->
webwork的强大的验证器(图一)        <field-validator type="email">
webwork的强大的验证器(图一)            <message>not a valid 邮件.</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="age">
webwork的强大的验证器(图一)        <field-validator type="int">
webwork的强大的验证器(图一)            <!--同样的最大最小值-->
webwork的强大的验证器(图一)            <param name="min">1</param>
webwork的强大的验证器(图一)            <param name="max">200</param>
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图二)webwork的强大的验证器(图三)                <!--注意这里,msn中可以用表达式取出值栈中的值例如$webwork的强大的验证器(图四){min}-->
webwork的强大的验证器(图二)webwork的强大的验证器(图三)                only people ages $webwork的强大的验证器(图四){min} to $webwork的强大的验证器(图四){max} may be true,otherwise
webwork的强大的验证器(图一)                you are a ghost
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <field name="desc">
webwork的强大的验证器(图一)        <field-validator type="requiredstring">
webwork的强大的验证器(图一)            <param name="trim">true</param>
webwork的强大的验证器(图一)            <message>you must enter a desc</message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <field-validator type="stringlength">
webwork的强大的验证器(图一)            <param name="minlength">1</param>
webwork的强大的验证器(图一)            <param name="maxlength">10</param>
webwork的强大的验证器(图一)            <!--从属性文件中取出my.key显示,如果取不到my.key就显示
webwork的强大的验证器(图一)            you must enter a desc length=10(my.key)-->
webwork的强大的验证器(图一)            <message key="my.key">
webwork的强大的验证器(图一)                you must enter a desc length=10(my.key)
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)        <!--可以使用正则表达式-->
webwork的强大的验证器(图一)        <field-validator type="regex">
webwork的强大的验证器(图一)            <param name="expression">
webwork的强大的验证器(图一)                <![cdata[([a-z][0-9][a-z][x])]]>
webwork的强大的验证器(图一)            </param>
webwork的强大的验证器(图二)webwork的强大的验证器(图三)            <!--message可以由固定的字符串,值栈中的值$webwork的强大的验证器(图四){desc}以及通过调用方法取到的
webwork的强大的验证器(图二)webwork的强大的验证器(图三)            属性文件中的值$webwork的强大的验证器(图四){gettext('my.key')}-->
webwork的强大的验证器(图一)            <message>
webwork的强大的验证器(图一)                "regex error ${gettext('my.key')} ${desc}"
webwork的强大的验证器(图一)            </message>
webwork的强大的验证器(图一)        </field-validator>
webwork的强大的验证器(图一)    </field>
webwork的强大的验证器(图一)    <!--上边的验证叫字段验证,下边这些验证叫普通验证,普通验证是优于字段验证的。
webwork的强大的验证器(图一)    在使用短路的时候要小心-->
webwork的强大的验证器(图一)    <!--上边那些都是基于字段的验证,这个是基于action的验证
webwork的强大的验证器(图一)    如果要在页面显示这些消息,需要加入<ww:actionerror/>
webwork的强大的验证器(图一)    -->
webwork的强大的验证器(图一)    <validator type="expression">
webwork的强大的验证器(图一)        <!--可以基于表达式的验证name.equals(desc)-->
webwork的强大的验证器(图一)        <param name="expression">name.equals(desc)</param>
webwork的强大的验证器(图一)        <message>name not the same as desc</message>
webwork的强大的验证器(图一)    </validator>
webwork的强大的验证器(图一)    <!-- plain validator 2 -->
webwork的强大的验证器(图一)    <!--可以基于表达式的验证mail.startswith('mark')-->
webwork的强大的验证器(图一)    <validator type="expression" short-circuit="true">
webwork的强大的验证器(图一)        <param name="expression">mail.startswith('mark')</param>
webwork的强大的验证器(图一)        <message>email does not start with mark</message>
webwork的强大的验证器(图一)    </validator>
webwork的强大的验证器(图一)</validators>

四、客户端验证
加入validate="true"
<ww:form name="test" action="javascriptvalidation" validate="true">
  ...
</ww:form>
这样的话webwork会根据你的服务器端的验证,对应生成javascript的验证,而且提示信息和服务器端
验证的方式一样,而不是alert的方式显示。(前题是你使用的都是标准的验证器)
五、
对应上边验证器的web页面


webwork的强大的验证器(图一)<%@page contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
webwork的强大的验证器(图一)<%@ taglib prefix="ww" uri="/webwork"%>
webwork的强大的验证器(图一)<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
webwork的强大的验证器(图一)<html>
webwork的强大的验证器(图一)    <head>
webwork的强大的验证器(图一)        <title></title>
webwork的强大的验证器(图一)        <ww:head />
webwork的强大的验证器(图一)    </head>
webwork的强大的验证器(图一)    <body>
webwork的强大的验证器(图一)        <!--  
webwork的强大的验证器(图一)        如果想统一的显示所有的erro打开下边这句
webwork的强大的验证器(图一)        <ww:fielderror />
webwork的强大的验证器(图一)        如果想显示其中一个error打开下边这句,默认显示在字段的正上方
webwork的强大的验证器(图一)        <ww:fielderror>
webwork的强大的验证器(图一)            <ww:param value="%{'name'}" />
webwork的强大的验证器(图一)        </ww:fielderror>
webwork的强大的验证器(图一)        <ww:fielderror>
webwork的强大的验证器(图一)            <ww:param>desc</ww:param>
webwork的强大的验证器(图一)        </ww:fielderror>
webwork的强大的验证器(图一)         -->
webwork的强大的验证器(图一)        <ww:form name="test" namespace="/" action="dbadmin" method="post" validate="true">
webwork的强大的验证器(图一)            <ww:actionmessage />
webwork的强大的验证器(图一)            <ww:actionerror/>
webwork的强大的验证器(图一)            <ww:textfield label="name" name="name" />
webwork的强大的验证器(图一)            <ww:date id="strcurrdate" name="currdate" format="yyyy-mm-dd" />
webwork的强大的验证器(图一)            <ww:datepicker name="currdate" id="currdate" showstime="true"
webwork的强大的验证器(图一)                format="%y-%m-%e %h:%m" cssclass="tx" language="zh" required="true"