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

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

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

    爪哇一角

    共同探討STRUTS#HIBERNATE#SPRING#EJB等技術(shù)
    posts - 3, comments - 6, trackbacks - 0, articles - 99
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    五 JSF驗證器

    Posted on 2009-01-20 14:48 非洲小白臉 閱讀(488) 評論(0)  編輯  收藏 所屬分類: JSF

    前面我們舉的例子,用戶需要輸入用戶名和密碼提交驗證。那么你輸入的密碼如果有長度限制,或者只能輸入數(shù)字的話,

    你可能會在用戶驗證之前進行檢查,這樣做也可以。

    但是我個人的理解,喚起應(yīng)用程序和執(zhí)行驗證相比,更靠后,程序效率會變低。而且程序的層次不清楚,驗證和邏輯混合,不易維護。

    所以我們可以自定義驗證器來解決。

     

    自定義驗證器要實現(xiàn)javax.faces.validator.Validator的validate()方法

    驗證出錯時ValidatorException,接受參數(shù)FacesMessage,可以在前臺用標簽<h:messages>顯示。

    我們先寫個驗證器:

    package test;

    import javax.faces.application.FacesMessage;

    import javax.faces.component.UIComponent;

    import javax.faces.context.FacesContext;

    import javax.faces.validator.Validator;

    import javax.faces.validator.ValidatorException;

    //自定義驗證器

    public class PasswordValidator implements Validator {

           public void validate(FacesContext context,

                UIComponent component,

                Object obj)

           throws ValidatorException {

                  String password = (String) obj;

                  if(password.length() < 6) {

                         FacesMessage message = new FacesMessage(

                             FacesMessage.SEVERITY_ERROR,

                             "字元長度小于6",

                             "字元長度不得小于6");

                         throw new ValidatorException(message);

                  }

                  if(!password.matches(".+[0-9]+")) {

                         FacesMessage message = new FacesMessage(

                               FacesMessage.SEVERITY_ERROR,

                               "密碼必須包括字元與數(shù)字",

                               "密碼必須是字元加數(shù)字所組成");

                         throw new ValidatorException(message);

                  }

           }

    }

    新建一個jsp文件,其實和上面例子用的jsp差不多,只是加入了密碼驗證。

    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

    <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

    <%@page contentType="text/html;charset=utf-8"%>

    <html>

    <head>

    <title>JSF 自定義驗證器</title>

    </head>

    <body>

    <f:view>

           <h:form>

                  <h3>請輸入您的名稱</h3>

                  <h:message for="dateField" style="color:red" /><p>

                  <h:outputText value="#{user.errMessage}" style="color:red"/><p>

                  <!-- 姓名 -->

                  名稱:<h:inputText value="#{user.name}" />

                  <p>密碼:<h:inputSecret id="dateField" value="#{user.password}">

    加入了密碼的驗證器。

     
                                <f:validator validatorId="test.Password"/>

                         </h:inputSecret><p>

                  <p><h:commandButton value="送出" action="#{user.verify}" />

           </h:form>

    </f:view>

    </body>

    </html>

    上面紅色部分就是加入的密碼驗證器,按照jsf的生命周期,它是在喚起應(yīng)用程序之前執(zhí)行的。

     

    faces-config.xmle中配置驗證器

    <!-- 驗證器 -->

        <validator>

            <validator-id>test.Password</validator-id>

            <validator-class>test.PasswordValidator</validator-class>

        </validator>

    Tomcat啟動后,http://localhost:8080/jsfTest/pages/jsfMyValidator.faces 就可以運行了。當密碼輸入小于6或者有字母的時候,就會出錯。

    具體程序參看示例程序。
    主站蜘蛛池模板: 四虎影视免费在线| 亚洲av产在线精品亚洲第一站| 色偷偷亚洲女人天堂观看欧| 亚洲黄片手机免费观看| 成人免费网站在线观看| 99蜜桃在线观看免费视频网站| 无码人妻一区二区三区免费视频 | 亚洲精品在线免费观看视频| 亚洲国产午夜福利在线播放| 好男人看视频免费2019中文| 久久99国产综合精品免费| 51午夜精品免费视频| 国产亚洲精品美女2020久久| 亚洲人成www在线播放| 真实乱视频国产免费观看| 免费A级毛片无码视频| a级男女仿爱免费视频| 五月天婷婷精品免费视频| 综合一区自拍亚洲综合图区 | 91高清免费国产自产| 久久青草91免费观看| 国产免费人成视频在线播放播| 亚洲成a人无码亚洲成www牛牛| 久久精品国产亚洲av麻豆图片| 久久亚洲中文字幕精品有坂深雪| 亚洲自偷自偷偷色无码中文| 亚洲女人被黑人巨大进入| 国产免费变态视频网址网站| 日本一道综合久久aⅴ免费| 四虎影院免费视频| 麻豆国产精品入口免费观看| 国产美女做a免费视频软件| 最近最新中文字幕完整版免费高清| 黄瓜视频影院在线观看免费| 在线看免费观看AV深夜影院 | 亚洲免费在线视频观看| 亚洲色av性色在线观无码| 亚洲经典在线中文字幕| 亚洲日韩在线视频| 亚洲五月丁香综合视频| 亚洲一区二区三区在线观看网站|