<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是如何實現的。首先看一下國際化,默認的情況下,會選擇默認的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設置,如果想動態切換locale,目前我的處理方式是這樣的:
    <f:loadBundle basename="messages_#{localeBean.locale}" var="msg"/>

    當然localeBean.locale的值是動態更改的,可以為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。通常的驗證機制,都是通過服務端來實現。如果想支持客戶端支持,估計還得自己寫一套接口去替換。不過看了其生命周期,覺得很難實現,除非脫離其生命周期。當然,這些使用ajax來處理,可能會減少服務端的通信負擔。
       其默認的驗證實現,包括以下幾個:
       DoubleRange:<f:validateDoubleRange>
          Length:
    <f:validateLength>
          LongRange:
    <f:validateLongRange>

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

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

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




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

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

    常用鏈接

    留言簿(12)

    隨筆分類(59)

    隨筆檔案(57)

    blog

    java

    uml

    搜索

    •  

    積分與排名

    • 積分 - 358033
    • 排名 - 156

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品亚洲综合在线第一区| 91免费国产视频| 亚洲综合在线一区二区三区| 学生妹亚洲一区二区| 另类专区另类专区亚洲| 香蕉视频在线免费看| 91老湿机福利免费体验| 亚洲成在人线aⅴ免费毛片| 又色又污又黄无遮挡的免费视| 在线精品亚洲一区二区小说| 亚洲一区精品中文字幕| 在线综合亚洲欧洲综合网站 | 亚洲中文字幕一二三四区| av无码免费一区二区三区| 亚洲另类少妇17p| 亚洲欧洲国产成人精品| 污污的视频在线免费观看| 中文字幕免费视频| 亚洲人成电影院在线观看| 拍拍拍无挡视频免费观看1000 | 99精品热线在线观看免费视频| 日本不卡视频免费| 亚洲AV无码专区电影在线观看| 亚洲欧洲AV无码专区| 99热在线精品免费播放6| 亚洲成人黄色在线观看| 女人18特级一级毛片免费视频| 亚洲国产第一页www| 国产一二三四区乱码免费| 国产美女a做受大片免费| 亚洲网站在线免费观看| 丁香花在线视频观看免费| 免费在线观看黄网| 91精品全国免费观看青青| 欧洲 亚洲 国产图片综合| 久久久久亚洲AV成人网人人网站| 亚洲第一综合天堂另类专 | 久久国产精品免费观看| 亚洲中文字幕无码专区| 免费国产草莓视频在线观看黄| 亚洲国产精品无码成人片久久|