除經特別注明外,本站文章版權歸JScud Develop團隊或其原作者所有.
轉載請注明作者和來源. scud(飛云小俠) 歡迎訪問 JScud Develop
這個特性應該說這是一個副產品.是我最近突然想到這個想法,然后試用webwork 2.2,發現可以做到,而webwork 2.1.7是做不到的.
名詞定義:
簡單頁面:不通過action訪問,直接訪問文件的url.例如直接訪問的jsp,或者直接訪問的ftl.
需求想法:
在一個網站中,有很多頁面,其中很多頁面僅僅是簡單的頁面,沒有程序處理等.不過為了國際化,這些頁面就需要進行i18n的工作.
1.按照正常的想法,應該是每個頁面都要寫一個action,然后結果定義為這個頁面,通過訪問action來對頁面進行國際化.或者是寫一個action,根據參數的不同,轉向目標頁面.
或者要定義很多action或者很多參數 或者用一個程序帶不同的參數來訪問. 總之是麻煩,不直觀.
2.實現自己的一個tag來裝載國際化信息.這樣很簡單.不過只能用在jsp里. 如果想使用freemarker的話,通過一些簡單處理,也可以使用這個功能.
這個思路很簡單,可以不依賴任何其他組件.
3.WebWork 2.1.7
如果是在Jsp中,可以通過
<ww:i18n name="message"> <ww:text name="name"/> </ww:i18n>
|
來實現簡單頁面的國際化. 無法在freemarker的簡單頁面中直接使用. (可以在action的結果頁面中使用)
4.WebWork 2.2 Beta (在最后發布的版本中,可能會有變化!!!)
在簡單頁面Jsp中,可以直接使用ww:text,例如
(注意:在webwork.properties中需要包含資源文件 webwork.custom.i18n.resources=message ,如果有多個,就用逗號分割)
在FreeMarker的簡單文件中,也可以直接使用ww:text.
當前是在web.xml里面配置了FreeMarker的處理引擎.如:
<servlet> <servlet-name>freemarker</servlet-name> <servlet-class>com.opensymphony.webwork.views. freemarker.FreemarkerServlet</servlet-class> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping> |
警告:如果你不使用FreeMarker的簡單頁面,不需要配置這個Servlet,即使使用freemarker的ftl頁面來做action的結果頁面,也不需要配置這個Servlet,使用webwork的freemarker結果即可,具體請瀏覽webwork的Result Type的文檔.