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

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

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

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    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" 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>
    六、對應上邊的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;
        }

    }

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

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

    posted on 2007-02-08 10:35 dreamstone 閱讀(1783) 評論(2)  編輯  收藏 所屬分類: web框架

    評論

    # re: WebWork的強大的驗證器 2007-04-24 17:48 MM

    怎么不講一講驗證小數  回復  更多評論   

    # re: WebWork的強大的驗證器 2008-07-30 14:39 huozhe

    好~ 非常感謝,,,  回復  更多評論   

    主站蜘蛛池模板: 亚洲人成在线影院| 97在线视频免费播放| 亚洲人成电影在线观看网| 亚洲人妻av伦理| 好吊妞在线成人免费| 亚洲精品线路一在线观看 | 国产男女猛烈无遮挡免费视频| 国产日韩AV免费无码一区二区| 噜噜噜亚洲色成人网站| 亚洲天堂2017无码中文| 久久精品国产亚洲av麻豆| 亚洲性久久久影院| 日本免费观看网站| A级毛片内射免费视频| 99视频免费播放| 免费看男人j放进女人j免费看| EEUSS影院WWW在线观看免费| 亚洲Av永久无码精品一区二区| 亚洲国产精品人久久电影| 久久亚洲私人国产精品vA| 亚洲gv猛男gv无码男同短文| 久久久精品国产亚洲成人满18免费网站| 日韩高清在线免费看| 成人免费午夜在线观看| 日韩在线免费视频| 波多野结衣在线免费视频| 6080午夜一级毛片免费看| 污污网站18禁在线永久免费观看| 四虎影视无码永久免费| 中国性猛交xxxxx免费看| 精品乱子伦一区二区三区高清免费播放 | 亚洲成熟xxxxx电影| 亚洲AV无码乱码国产麻豆穿越| 亚洲色自偷自拍另类小说| 狠狠亚洲婷婷综合色香五月排名| 国产成人亚洲精品91专区手机| 中文字幕第13亚洲另类| 亚洲另类激情综合偷自拍图| 亚洲成色在线综合网站| 亚洲精品无码不卡| 亚洲黄色片免费看|