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

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

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

    爪哇一角

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

    五 JSF驗證器

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

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

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

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

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

     

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

    驗證出錯時ValidatorException,接受參數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,

                               "密碼必須包括字元與數字",

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

                         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的生命周期,它是在喚起應用程序之前執行的。

     

    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不卡在线| 无遮挡呻吟娇喘视频免费播放| 日本一区免费电影| 亚洲国产精品自在自线观看| 国产美女精品视频免费观看| 国产AV日韩A∨亚洲AV电影 | **aaaaa毛片免费| 亚洲精品综合久久中文字幕| 最近免费字幕中文大全视频 | 好爽好紧好大的免费视频国产| 亚洲综合激情五月色一区| 免费观看男人免费桶女人视频| 蜜桃传媒一区二区亚洲AV| 亚洲AV伊人久久青青草原 | 免费看一级一级人妻片| 亚洲av无码乱码在线观看野外| 久久免费香蕉视频| 亚洲人成网www| A级毛片内射免费视频| 精品国产日韩亚洲一区91| 亚洲国产精品一区二区第四页 | 亚洲熟妇AV乱码在线观看| 亚洲成AV人在线观看网址| 少妇性饥渴无码A区免费| 亚洲性一级理论片在线观看| 暖暖日本免费在线视频| 国产精品综合专区中文字幕免费播放 | 亚洲va久久久噜噜噜久久天堂 | 中文字幕版免费电影网站| 午夜亚洲AV日韩AV无码大全| 男人的好看免费观看在线视频| 国产精品亚洲专区无码不卡| 日本亚洲视频在线| 四虎影院免费视频| 视频免费在线观看| 亚洲一卡2卡三卡4卡无卡下载| av在线亚洲欧洲日产一区二区 | 亚洲成片观看四虎永久| 污污网站免费观看| 国产成人人综合亚洲欧美丁香花 |