<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或者有字母的時候,就會出錯。

    具體程序參看示例程序。
    主站蜘蛛池模板: 毛片免费全部播放无码| 美女免费视频一区二区三区| 国产色爽免费无码视频| 亚洲国产a级视频| 国产尤物在线视精品在亚洲| 国产精品黄页在线播放免费| 午夜亚洲国产理论片二级港台二级 | 中国videos性高清免费| 亚洲精品天堂成人片?V在线播放| 亚洲AV永久无码天堂影院| 天天摸天天碰成人免费视频| 亚洲中文字幕乱码熟女在线| 免费看片A级毛片免费看| 亚洲第一第二第三第四第五第六| 成人毛片视频免费网站观看| 亚洲国产精品成人AV在线| 国产精品酒店视频免费看| 男人扒开添女人下部免费视频| 亚洲AV蜜桃永久无码精品| 一级做a爰片久久毛片免费看| 怡红院亚洲怡红院首页| 精品亚洲永久免费精品| 亚洲综合久久综合激情久久| 免费下载成人电影| 精品亚洲成a人在线观看| 久久久久亚洲爆乳少妇无| 嫩草在线视频www免费观看| 中文字幕亚洲第一在线| 久久久久国色AV免费看图片| 国产亚洲成在线播放va| 国产AV无码专区亚洲AWWW | 亚欧在线精品免费观看一区| 亚洲粉嫩美白在线| 免费在线观看中文字幕| 99精品视频免费| 亚洲中文字幕在线无码一区二区| 日韩精品视频免费观看| 三级黄色在线免费观看| 亚洲导航深夜福利| 又大又黄又粗又爽的免费视频| 中国性猛交xxxxx免费看|