<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 非洲小白臉 閱讀(495) 評論(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或者有字母的時候,就會出錯。

    具體程序參看示例程序。
    主站蜘蛛池模板: 亚洲精品无码鲁网中文电影| 久久午夜免费视频| 亚洲精品亚洲人成人网| 色妞WWW精品免费视频| 亚洲午夜无码久久久久小说 | 成人特黄a级毛片免费视频| 最近更新免费中文字幕大全| 亚洲成a人片在线观看天堂无码 | 久久永久免费人妻精品下载| 亚洲精品美女视频| 免费一本色道久久一区| 久久午夜免费鲁丝片| 国产精品亚洲一区二区麻豆| 又粗又大又长又爽免费视频| 国产三级在线观看免费| 免费v片在线观看视频网站| 久久青草精品38国产免费| 丝瓜app免费下载网址进入ios| 国产精品亚洲精品爽爽| 亚洲日本va在线视频观看| 伊人久久亚洲综合影院| 国产免费69成人精品视频| 成熟女人牲交片免费观看视频| 一级一黄在线观看视频免费| 亚洲av最新在线网址| 国产亚洲自拍一区| 国产亚洲人成A在线V网站| 亚洲精品第一国产综合精品99| 69视频免费在线观看| 四虎影视成人永久免费观看视频 | 免费a级毛片无码a∨蜜芽试看 | 亚洲一卡2卡3卡4卡国产网站 | 波多野结衣在线免费观看| 黄色网址免费在线| 在线亚洲v日韩v| 黄网站色视频免费观看45分钟| 羞羞视频网站免费入口| 日韩在线视频播放免费视频完整版| 亚洲国产精品午夜电影| 亚洲中文字幕无码av在线| 亚洲kkk4444在线观看|