亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Springi18n的betterpractice

2019-11-18 13:53:35
字體:
來源:轉載
供稿:網友

  因為希望把SPRingSide搞成國際化項目,i18n就成了必做的事情。
    照抄appfuse,折騰了很久后才發現appfuse式的sample總是只顧著演示自己的一畝三分地而忽略了很多其他東西。

   1.從基礎開始,沒有Spring時,java的i18n是這樣的:
   1.1 jsp環境
    首先寫一個messages.zh_CN.properties文件,放在class-path也就是/WEB-INF/classes里     welcome=歡迎    然后用native2ascii.exe把它轉為 welcome=/u6b22/u8fce
    在web.xml中定義messages文件     <context-param>
            <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
            <param-value>messages</param-value>
        </context-param>
    最后在jsp里使用
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<fmt:message key="welcome"/>
假如有多個Resource Bundle文件, 就要在jsp里用<ftm:bundle>定義了.

1.2 pure Java環境
    ResourceBundle rb = ResourceBundle.getBundle("messages");
    String welcome = rb.getString("welcome");

2.Spring的增強及appfuse的做法
   Spring增加了MessageSource的概念,一是applicationContext將充當一個單例的角色,不再需要每次使用i18時都初始化一次ResourceBundle,二是可以代表多個Resource Bundle.

   在ApplicationContext的定義文件中,增加如下節點: 
   <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="messages"/>
    </bean>
   則在pure java環境中。  context.getMessage("welcome", null, Locale.CHINA)

  而在jsp環境中,Controller調用JSTL viewResolver再調用Jsp時,<fmt:message>將繼續發揮它的功效。

  因此,appfuse等sample都是在appfuse-servlet.xml 中定義一個<messageSource>。

3.Better Practice
3.1 要不要定義javax.servlet.jsp.jstl.fmt.localizationContext
      Appfuse等sample,都是假定大家完全使用Controller作訪問入口,jsp甚至藏在了/web-inf/中。而很不幸,大家的項目可能還是有很多直接訪問jsp的地方,而直接訪問jsp時,<messageSource>節點是沒有作用的。
     但假如定義了javax...localizationContext, 又會讓MessageSource失效......

3.2 messageSource定義在ApplicationContext.xml還是appfuse-servlet.xml
     ApplicationContext*.xml由ContextLoaderListener載入,而appfuse-servlet.xml靠dispatchServlet載入,并擁有一個指向ApplcationContex*.xml指針。所以,appfuse-servlet.xml能看到定義在ApplcationContext里的東西,而反之做不到。
     明顯, 把<messageSource>定義在ApplicationContext.xml 能獲得更好的可見性。
     但是appfuse沒有在pure Java代碼中使用i18n,也就沒有考慮這個問題。

3.3 果斷不用雞肋級<spring:message> tag
      連appfuse也不用它,可見多么雞肋。因為fmt在找不到資源時,最多顯示???welcome???,而<spring:message>則會拋出異常,誰會喜歡這種定時炸彈阿。

3.4 有趣的theme 解決"做成圖片的文字"的國際化
       theme也就是把message的原理發揮了一下,讓不同語言的美術字圖片的路徑也可以定義在theme_zh_CN.properties和theme_en_US.properties中。終于有一個不那么雞肋的spring tag了。

4.簡單歸納

1. jstl中仍然使用標準的<ftm:message>及其定義?

2.java中使用spring的<messageSource>實現單例

3.用<spring:theme>解決那些做成圖片的文字的國際化問題

4.Spring 還有session,cookie locale resolver, 到時可以看一下.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线欧美在线| 8090理伦午夜在线电影| 亚洲国产中文字幕在线观看| 九色91av视频| 日韩二区三区在线| 国产成人小视频在线观看| 欧美成人亚洲成人日韩成人| 国产午夜精品全部视频播放| 久久久女人电视剧免费播放下载| 日韩视频在线一区| 国产成人精品在线观看| 亚洲无线码在线一区观看| 久久精品国产亚洲7777| 久久久精品久久久久| 日韩av在线免费| 日韩欧美精品网址| 久久琪琪电影院| 国产精品入口日韩视频大尺度| 国产精品久久久久福利| 亚洲色图狂野欧美| 亚洲天堂开心观看| 九九精品视频在线| 清纯唯美亚洲激情| 国产一区二区日韩| 亚洲日本成人女熟在线观看| 欧美日韩国产丝袜美女| 91久久精品日日躁夜夜躁国产| 日韩成人性视频| 亚洲精品成人av| 国产噜噜噜噜噜久久久久久久久| 亚洲性视频网址| 日本欧美在线视频| 日韩电影在线观看永久视频免费网站| 亚洲精品v欧美精品v日韩精品| 久久久久久久影院| 亚洲黄色av女优在线观看| 亚洲国产日韩欧美综合久久| 久久久免费观看视频| 国产成人久久久精品一区| 91网在线免费观看| 亚洲va欧美va国产综合久久| 久久久久久久久久久久久久久久久久av| 成人www视频在线观看| 亚洲午夜未删减在线观看| 亚洲国产日韩一区| 欧美精品一区三区| 亚洲一区亚洲二区亚洲三区| 欧美在线视频一区| 国产精品丝袜视频| 伊人伊成久久人综合网小说| 日韩在线观看免费高清完整版| 国产精品露脸av在线| 国模gogo一区二区大胆私拍| 亚洲一区二区三区毛片| 亚洲午夜女主播在线直播| 欧美最猛性xxxx| 亚洲一区精品电影| 大荫蒂欧美视频另类xxxx| 亚洲精品小视频在线观看| 高清一区二区三区日本久| 91精品国产91久久久久| 色婷婷亚洲mv天堂mv在影片| 中文字幕亚洲第一| 久热爱精品视频线路一| 久久精品国产亚洲精品2020| 亚洲国产精品va在看黑人| 亚洲直播在线一区| 国产精品a久久久久久| 美女性感视频久久久| 欧美性猛交xxxx乱大交极品| 久久久中精品2020中文| 亚洲欧美国产高清va在线播| 日韩av中文字幕在线| 久操成人在线视频| 精品呦交小u女在线| 国产精品美女www爽爽爽视频| 国产精品video| 国模私拍视频一区| 日韩在线高清视频| 欧美中文字幕在线播放| 亚洲成年人在线播放| 欧美老女人www| 91色琪琪电影亚洲精品久久| 精品国产欧美一区二区五十路| 国产精品国产三级国产专播精品人| 一本一本久久a久久精品综合小说| 国产女同一区二区| 亚洲国产精品福利| 韩国美女主播一区| 日韩av在线直播| 亚洲国产精品一区二区久| 91系列在线观看| 国产日韩欧美日韩| 欧美激情一区二区三区高清视频| 欧美精品少妇videofree| 国内精品视频一区| 国产专区精品视频| 97视频在线观看网址| 韩剧1988在线观看免费完整版| 日本欧美国产在线| 欧美精品videosex性欧美| 97久久精品人搡人人玩| 国产亚洲精品美女久久久久| 欧美激情亚洲一区| 不卡伊人av在线播放| 欧美专区国产专区| 亚洲国产天堂久久综合网| 国产精品久久久久77777| 欧美高清videos高潮hd| 国产精品久久久久7777婷婷| 日韩av男人的天堂| 久久成人国产精品| 亚洲裸体xxxx| 欧美激情国产精品| 日韩av在线免费看| 亚洲国产精品va在线看黑人动漫| 日韩免费av一区二区| 国产精品亚洲激情| 久久久免费观看视频| 色综合久久精品亚洲国产| 亚洲免费人成在线视频观看| 久久久亚洲福利精品午夜| 91网在线免费观看| 国外成人在线视频| 日韩成人激情影院| 91禁外国网站| 精品欧美aⅴ在线网站| 欧美中在线观看| 日韩中文字幕精品视频| 黑人巨大精品欧美一区二区免费| 亚洲一二三在线| 国产成人涩涩涩视频在线观看| 尤物精品国产第一福利三区| 亚洲精品国精品久久99热一| 亚洲色图17p| 国产第一区电影| 久久精品视频在线| 亚洲高清免费观看高清完整版| 日韩中文字幕在线视频播放| 久久久久久999| 亚洲国产成人精品电影| 欧美一区第一页| 日韩理论片久久| 91亚洲永久免费精品| 国产欧美一区二区三区久久| 欧美丝袜一区二区三区| 欧美在线一级va免费观看| 亚洲老板91色精品久久| 久久久精品久久久久| 国产精品久久99久久| 2019亚洲男人天堂| www.国产精品一二区| 国产视频精品久久久| 91在线视频导航| 久久中国妇女中文字幕| 亚洲国产精品久久久久秋霞不卡| 亚洲第一福利视频| 国产一区二区三区日韩欧美| 亚洲欧美制服综合另类| 欧美成人免费一级人片100| 日本高清视频一区| 亚洲人成绝费网站色www| 国产成人拍精品视频午夜网站| 国产精品影院在线观看|