<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊(cè)

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825769
    • 排名 - 49

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    webwork提供了強(qiáng)大的驗(yàn)證功能,下邊一一介紹一些常用的功能的用法。
    一,首先webwork的validator是基于攔截器的,所以首先要配制一下攔截器,默認(rèn)的攔截器,已經(jīng)
    使用了validator,如果你想定義自己的攔截器組合,記得在你的攔截器的stack中把這句話加入
    <interceptor-ref name="validation">
        
    <param name="excludeMethods">
            input,back,cancel,browse
        
    </param>
    </interceptor-ref>
    二、是否使用自定義Validator:在一般情況下webwork提供的Validator已經(jīng)能應(yīng)付大多數(shù)問題,
    但是如果你想自己定義,那么記得注冊(cè)你的驗(yàn)證器(Validator),一個(gè)簡(jiǎn)單的注冊(cè)辦法是
    添加一個(gè)文件名為 validators.xml 的文件在你的classpath (/WEB-INF/classes) 的根目錄下
    文件中的內(nèi)容類似如下:
    <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如果已經(jīng)定義了,那么它應(yīng)該在classpath中可以找到.然而如果不需要自定義的校驗(yàn)器,那么這不是必須的.WebWork會(huì)自動(dòng)從發(fā)布包里的
    xwork jar文件中取得一個(gè)事先定義好的校驗(yàn)器集合(com/opensymphony/xwork/validator/validators/default.xml).
    瀏覽ValidatorFactory的static塊來了解詳細(xì)信息
    2,如果自定義的校驗(yàn)器被定義了而且創(chuàng)建了一個(gè)validators.xml文件并放在classpath中,
    記得復(fù)制所有其他你需要的預(yù)定義的校驗(yàn)器到validators.xml里,如果你不需要注冊(cè)則不需要.
    一旦validators.xml在classpath里被檢測(cè)到,缺省的 (com/opensymphony/xwork/validator/validators/default.xml)
    就不會(huì)被裝載了.只有沒發(fā)現(xiàn)自定義 validators.xml的時(shí)候才會(huì)裝載.要小心.這點(diǎn)類似Java中的缺省構(gòu)造函數(shù)

    三、定義校驗(yàn)規(guī)則
    <!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>
                
    <!--提示的錯(cuò)誤信息-->
                
    <message>You must enter a name</message>
            
    </field-validator>
        
    </field>
        
    <field name="currDate">
            
    <field-validator type="date">
                
    <!--最小時(shí)間-->
                
    <param name="min">01/01/2007</param>
                
    <!--最大時(shí)間-->
                
    <param name="max">02/28/2007</param>
                
    <!--提示的錯(cuò)誤信息-->
                
    <message>
                    The date must be between 
    01-01-2007 and 02-28-2007.
                
    </message>
            
    </field-validator>
        
    </field>
        
    <field name="url">
            
    <!--short-circuit是否短路檢驗(yàn),類似&&運(yùn)算的短路算法-->
            
    <field-validator type="required" short-circuit="true">
                
    <!--提示的錯(cuò)誤信息-->
                
    <message>You must enter a value for url.</message>
            
    </field-validator>
            
    <!--webwork提供的url驗(yàn)證-->
            
    <field-validator type="url" short-circuit="true">
                
    <!--提示的錯(cuò)誤信息-->
                
    <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的驗(yàn)證,驗(yàn)證器由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中可以用表達(dá)式取出值棧中的值例如${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>
            
    <!--可以使用正則表達(dá)式-->
            
    <field-validator type="regex">
                
    <param name="expression">
                    
    <![CDATA[([a-z][0-9][A-Z][x])]]>
                
    </param>
                
    <!--message可以由固定的字符串,值棧中的值${desc}以及通過調(diào)用方法取到的
                屬性文件中的值$
    {getText('my.key')}-->
                
    <message>
                    
    "regex error ${getText('my.key')} ${desc}"
                
    </message>
            
    </field-validator>
        
    </field>
        
    <!--上邊的驗(yàn)證叫字段驗(yàn)證,下邊這些驗(yàn)證叫普通驗(yàn)證,普通驗(yàn)證是優(yōu)于字段驗(yàn)證的。
        在使用短路的時(shí)候要小心
    -->
        
    <!--上邊那些都是基于字段的驗(yàn)證,這個(gè)是基于Action的驗(yàn)證
        如果要在頁(yè)面顯示這些消息,需要加入
    <ww:actionError/>
        
    -->
        
    <validator type="expression">
            
    <!--可以基于表達(dá)式的驗(yàn)證name.equals(desc)-->
            
    <param name="expression">name.equals(desc)</param>
            
    <message>name not the same as desc</message>
        
    </validator>
        
    <!-- Plain Validator 2 -->
        
    <!--可以基于表達(dá)式的驗(yàn)證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>

    四、客戶端驗(yàn)證
    加入validate="true"
    <ww:form name="test" action="javascriptValidation" validate="true">
      ...
    </ww:form>
    這樣的話webwork會(huì)根據(jù)你的服務(wù)器端的驗(yàn)證,對(duì)應(yīng)生成javaScript的驗(yàn)證,而且提示信息和服務(wù)器端
    驗(yàn)證的方式一樣,而不是alert的方式顯示。(前題是你使用的都是標(biāo)準(zhǔn)的驗(yàn)證器)
    五、
    對(duì)應(yīng)上邊驗(yàn)證器的web頁(yè)面


    <%@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>
            
    <!--  
            如果想統(tǒng)一的顯示所有的Erro打開下邊這句
            
    <ww:fielderror />
            如果想顯示其中一個(gè)Error打開下邊這句,默認(rèn)顯示在字段的正上方
            
    <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" id="currDate" showstime="true"
                    format
    ="%Y-%m-%e %H:%M" cssClass="tx" language="zh" required="true"
                    template
    ="datepicker.ftl" label="currDate" value="%{strCurrDate}" >
                
    </ww:datepicker>
                
    <ww:textfield label="url" name="url" />
                
    <ww:textfield label="mail" name="mail" />
                
    <ww:textfield label="age" name="age" />
                
    <ww:textfield label="desc" name="desc" />
                
    <ww:submit action="DbAdmin" method="doTestValidator"
                    value
    ="doTestValidator" />
            
    </ww:form>
        
    </body>
    </html>
    六、對(duì)應(yīng)上邊的Action代碼
    package niis.web.actions.temp;

    import java.text.SimpleDateFormat;
    import java.util.Date;

    import niis.persistence.ITestDao;
    import niis.persistence.dao.SqlCommand;
    import niis.web.actions.AbstractAction;

    public class DbAdminAction {
        
    private String name;
        
    private Date currDate ;
        
    private String url;
        
    private String mail;
        
    private int age;
        
    private String desc;
        
        
    public String doTestValidator(){
            System.out.println(name);
            System.out.println(currDate);
            System.out.println(url);
            System.out.println(mail);
            System.out.println(age);
            
    return SUCCESS;
        }

        
    /**
         * 
    @return the age
         
    */

        
    public int getAge() {
            
    return age;
        }

        
    /**
         * 
    @param age the age to set
         
    */

        
    public void setAge(int age) {
            
    this.age = age;
        }

        
    /**
         * 
    @return the date
         
    */

        
    public Date getCurrDate() {
            
    return currDate;
        }

        
    /**
         * 
    @param date the date to set
         
    */

        
    public void setCurrDate(Date date) {
            
    this.currDate = date;
        }

        
    /**
         * 
    @return the mail
         
    */

        
    public String getMail() {
            
    return mail;
        }

        
    /**
         * 
    @param mail the mail to set
         
    */

        
    public void setMail(String mail) {
            
    this.mail = mail;
        }

        
    /**
         * 
    @return the name
         
    */

        
    public String getName() {
            
    return name;
        }

        
    /**
         * 
    @param name the name to set
         
    */

        
    public void setName(String name) {
            
    this.name = name;
        }

        
    /**
         * 
    @return the url
         
    */

        
    public String getUrl() {
            
    return url;
        }

        
    /**
         * 
    @param url the url to set
         
    */

        
    public void setUrl(String url) {
            
    this.url = url;
        }

        
    /**
         * 
    @return the testDao
         
    */

        
    public ITestDao getTestDao() {
            
    return testDao;
        }

        
    /**
         * 
    @return the desc
         
    */

        
    public String getDesc() {
            
    return desc;
        }

        
    /**
         * 
    @param desc the desc to set
         
    */

        
    public void setDesc(String desc) {
            
    this.desc = desc;
        }

    }

    七、簡(jiǎn)單提示:屬性文件的名字類名+properties,validator配制文件的名字類名+validation.xml
    (還有其它的組合方式)
    例如對(duì)應(yīng)的DbAdminAction.java
    DbAdminAction-validation.xml
    DbAdminAction.properties
    注意
    許多WebWork 標(biāo)簽的 required 屬性和客戶端校驗(yàn)沒有什么關(guān)系. 它只是在某個(gè)theme(例如xhtml)中用來在一個(gè)標(biāo)識(shí)為必填的字段周圍放置一個(gè)'*'.

    八、上邊程序的示例代碼(從eclipse導(dǎo)出的工程)
    http://www.tkk7.com/Files/dreamstone/vl.rar



    posted on 2007-08-24 15:36 Ke 閱讀(403) 評(píng)論(0)  編輯  收藏 所屬分類: webwork
    主站蜘蛛池模板: 四虎1515hm免费国产| 亚洲国产成人久久精品大牛影视| 精品国产一区二区三区免费| 国产亚洲精品高清在线| 国产精品福利片免费看| 亚洲国产中文字幕在线观看| 无码AV动漫精品一区二区免费| 亚洲国产精品一区二区第一页免| 一级女人18片毛片免费视频| 中文字幕亚洲乱码熟女一区二区 | 国产人成网在线播放VA免费| 亚洲精品无码久久千人斩| 日韩免费人妻AV无码专区蜜桃| 亚洲一区二区三区久久| 暖暖免费高清日本一区二区三区| 无码天堂va亚洲va在线va| 久久久青草青青亚洲国产免观| 99视频在线免费| 亚洲欧美黑人猛交群| 免费看黄福利app导航看一下黄色录像| 亚洲乱亚洲乱少妇无码| 日韩电影免费观看| 中文字幕精品三区无码亚洲| 亚洲精品亚洲人成在线观看下载| 永久在线观看免费视频 | 国产成人免费a在线视频app| ssswww日本免费网站片| 亚洲欧洲自拍拍偷午夜色| 国产在线观看免费完整版中文版| XXX2高清在线观看免费视频| 亚洲大香伊人蕉在人依线| 免费在线看片网站| 13一14周岁毛片免费| 美女露隐私全部免费直播| 日木av无码专区亚洲av毛片| 国产精品免费一级在线观看| 国产午夜不卡AV免费| 色吊丝免费观看网站| 亚洲国产精品成人久久久| 免费a级毛片在线观看| 成人免费观看一区二区|