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

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

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

    閑人野居
    好好學(xué)習(xí),天天向上
    posts - 57,  comments - 137,  trackbacks - 0
        這些東東,對(duì)于web框架來(lái)說(shuō),是必不可少的,來(lái)看看jsf是如何實(shí)現(xiàn)的。首先看一下國(guó)際化,默認(rèn)的情況下,會(huì)選擇默認(rèn)的locale,以及相應(yīng)的資源文件。當(dāng)然可以通過(guò)以下方式進(jìn)行配置:
    <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應(yīng)用一致。
    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


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


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

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

    如果想在代碼中使用,還是需要使用以下方法:
    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;
        }

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

       從字面意思可以看出來(lái)。
       當(dāng)然,每個(gè)組件都有默認(rèn)的驗(yàn)證器required。只要設(shè)置其屬性為ture,就會(huì)進(jìn)行空值判斷。
      
       對(duì)于組件來(lái)說(shuō),支持多個(gè)驗(yàn)證器。但是沒(méi)有看到關(guān)聯(lián)組件的驗(yàn)證器,需要自己實(shí)現(xiàn)。如password的是否一致

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

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




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

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

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 357234
    • 排名 - 155

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产精品无码成人片久久| 国产AV无码专区亚洲AVJULIA| 国产精品亚洲一区二区在线观看| 免费不卡中文字幕在线| 中国国产高清免费av片| 久久久久久亚洲AV无码专区| 最近中文字幕mv手机免费高清| 色费女人18女人毛片免费视频| 亚洲av无码专区国产乱码在线观看| 久久WWW免费人成一看片| 亚洲av日韩综合一区久热| 在线亚洲午夜理论AV大片| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 毛片免费视频在线观看| 一级毛片a免费播放王色电影 | 91天堂素人精品系列全集亚洲| 免费无遮挡无码视频网站| 国内少妇偷人精品视频免费| 亚洲午夜无码久久久久小说| 伊人久久大香线蕉亚洲| 国产成人福利免费视频| 好湿好大好紧好爽免费视频| 中文字幕亚洲精品无码| 国产亚洲一区二区三区在线| 四虎成人免费大片在线| 久久精品成人免费观看| 黄页网站在线观看免费| 亚洲人成毛片线播放| 亚洲午夜久久久影院| 国产精品二区三区免费播放心| 亚欧免费无码aⅴ在线观看| 美女的胸又黄又www网站免费| 亚洲成人福利在线| 国产亚洲一区二区手机在线观看| 国产成人免费全部网站| 国产成人午夜精品免费视频| 精品一区二区三区免费 | 久久久久国产精品免费免费搜索| 久久99热精品免费观看动漫| 黄色视频在线免费观看| 亚洲av无码兔费综合|