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

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

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

    閑人野居
    好好學習,天天向上
    posts - 57,  comments - 137,  trackbacks - 0
        這些東東,對于web框架來說,是必不可少的,來看看jsf是如何實現(xiàn)的。首先看一下國際化,默認的情況下,會選擇默認的locale,以及相應的資源文件。當然可以通過以下方式進行配置:
    <application>
    <locale-config>
    <default-locale>en</default-locale>
    <supported-locale>en</supported-locale>
    <supported-locale>es</supported-locale>
    </locale-config>
    <message-bundle>CustomMessages</message-bundle>
    </application>

    資源文件,也是和其他web應用一致。
    halloween=Every day is like Halloween.
    numberOfVisits
    =You have visited us {0} time(s), {1}. Rock on!
    toggleLocale
    =Translate to Spanish
    helloImage
    =../images/hello.gif


    如果需要在頁面中使用相應的bundle,需要使用以下的標記:
    <f:loadBundle basename="LocalizationResources" var="bundle"/>
    <h:outputText value="#{bundle.halloween}"/>


    當然這是使用默認的locale設置,如果想動態(tài)切換locale,目前我的處理方式是這樣的:
    <f:loadBundle basename="messages_#{localeBean.locale}" var="msg"/>

    當然localeBean.locale的值是動態(tài)更改的,可以為en,zh_CN,等等。
    個人覺得和spring 的web framework相比,沒有spring的那么靈活,不過基本上都能解決問題,湊合著用吧。

    如果想在代碼中使用,還是需要使用以下方法:
    public static String getMessageString(String name, Object params) {
        String str 
    = "";
        FacesContext facesContext 
    = FacesContext.getCurrentInstance();
        String bundleName 
    = facesContext.getApplication().getMessageBundle();
        
    if (bundleName != null) {
            Locale locale 
    = facesContext.getViewRoot().getLocale();
            ResourceBundle bundle 
    = ResourceBundle.getBundle(bundleName,
                locale, getCurrentClassLoader(params));
            str 
    = bundle.getString(name);
        }
        
    return str;
        }

        對于驗證機制,基本的接口為Validator,只有一個方法validate。通常的驗證機制,都是通過服務端來實現(xiàn)。如果想支持客戶端支持,估計還得自己寫一套接口去替換。不過看了其生命周期,覺得很難實現(xiàn),除非脫離其生命周期。當然,這些使用ajax來處理,可能會減少服務端的通信負擔。
       其默認的驗證實現(xiàn),包括以下幾個:
       DoubleRange:<f:validateDoubleRange>
          Length:
    <f:validateLength>
          LongRange:
    <f:validateLongRange>

       從字面意思可以看出來。
       當然,每個組件都有默認的驗證器required。只要設置其屬性為ture,就會進行空值判斷。
      
       對于組件來說,支持多個驗證器。但是沒有看到關聯(lián)組件的驗證器,需要自己實現(xiàn)。如password的是否一致

       類型轉換,接口Converter,包括兩個方法:
        public Object getAsObject(FacesContext context, UIComponent component,
                                  String value);
        
    public String getAsString(FacesContext context, UIComponent component,
                                  Object value);

      
      前者轉化為對象,后者為用于頁面輸出。
      在進行驗證前,都會先進行值轉換。
      對于轉換,內部已經提供了基本類型的實現(xiàn),包括數(shù)字,日期,boolean型。
      當然Converter另外一個功能,就是提供格式化輸出,支持NumberFormat和DateFormat的輸出:
      包括:<f:convertDateTime>和<f:convertNumber pattern="###,###.##;(###,###.##)"/>其樣式,完全采用相應的java樣式。




    posted on 2007-05-24 13:26 布衣郎 閱讀(3084) 評論(0)  編輯  收藏 所屬分類: web view技術

    <2007年5月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 357203
    • 排名 - 155

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品亚洲综合一区在线观看| 伊人久久综在合线亚洲2019| 蜜芽亚洲av无码一区二区三区| 青娱乐免费在线视频| 亚洲国产精品自在线一区二区| 在线观看免费黄色网址| 亚洲精品无码mv在线观看网站| 中国黄色免费网站| 亚洲AV无码AV男人的天堂| 1区2区3区产品乱码免费| 色婷五月综激情亚洲综合| 青青青国产免费一夜七次郎 | 亚洲最大免费视频网| 亚洲欧洲日产专区| 免费无码AV电影在线观看| 337P日本欧洲亚洲大胆精品| 亚洲国产日韩在线观频| 免费看男人j放进女人j免费看| 亚洲专区一路线二| 国产伦一区二区三区免费| 99久久免费国产精精品| 亚洲欧洲国产视频| 四虎永久精品免费观看| 中文无码日韩欧免费视频| 亚洲精品亚洲人成在线观看麻豆| 日韩一区二区a片免费观看| 污污的视频在线免费观看| 亚洲AV中文无码乱人伦下载| 国产精品久久免费| 美女视频黄频a免费观看| 久久久亚洲精品国产| 24小时日本在线www免费的| 人成午夜免费大片在线观看| 久久免费国产精品| 亚洲黄色在线网站| 亚洲第一网站男人都懂| 曰批全过程免费视频播放网站 | 国产.亚洲.欧洲在线| 亚洲精品国精品久久99热| 啦啦啦完整版免费视频在线观看 | 久久久久久亚洲精品影院|