W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
以下部分顯示如何在JSF中使用國際化。
國際化是一種我們可以用來顯示狀態(tài)消息,GUI組件標(biāo)簽,貨幣,日期用不同語言的技術(shù)。
顯示的文本不是在程序中硬編碼,而是存儲在資源束中的源代碼之外并動態(tài)加載。
首先,我們需要創(chuàng)建一個包含消息的屬性文件。為每個區(qū)域設(shè)置創(chuàng)建屬性文件。通常一個語言環(huán)境用于一種語言。
屬性文件的名稱應(yīng)為<file-name> _ <locale> .properties格式。
默認(rèn)區(qū)域設(shè)置可以在文件名中省略。
以下是來自messages.properties文件。
greeting=Hello World!
以下是來自messages_fr.properties文件。 fr是法語。
greeting=Bonjour tout le monde!
然后,更新faces-config.xml
<application> <locale-config> <default-locale>en</default-locale> <supported-locale>fr</supported-locale> </locale-config> <resource-bundle> <base-name>com.w3cschool.messages</base-name> <var>msg</var> </resource-bundle> </application>
最后,我們可以使用resource-bundle var。
<h:outputText value="#{msg["greeting"]}" />
以下代碼來自welcome_zh_CN.properties。
welcome.jsf = \u5feb\u4e50\u5b66\u4e60 JSF 2.0
以下代碼來自demo.xhtml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" > <h:body> <h:form> <h3> <h:outputText value="#{msg["welcome.jsf"]}" /> </h3> <h:panelGrid columns="2"> Language : <h:selectOneMenu value="#{language.localeCode}" onchange="submit()" valueChangeListener="#{language.countryLocaleCodeChanged}"> <f:selectItems value="#{language.countriesInMap}" /> </h:selectOneMenu> </h:panelGrid> </h:form> </h:body> </html>
下面的代碼來自UserBean.java。
package cn.w3cschool.common; import java.io.Serializable; import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.faces.event.ValueChangeEvent; @ManagedBean(name="language") @SessionScoped public class UserBean implements Serializable{ private static final long serialVersionUID = 1L; private String localeCode; private static Map<String,Object> countries; static{ countries = new LinkedHashMap<String,Object>(); countries.put("English", Locale.ENGLISH); //label, value countries.put("Chinese", Locale.SIMPLIFIED_CHINESE); } public Map<String, Object> getCountriesInMap() { return countries; } public String getLocaleCode() { return localeCode; } public void setLocaleCode(String localeCode) { this.localeCode = localeCode; } public void countryLocaleCodeChanged(ValueChangeEvent e){ String newLocaleValue = e.getNewValue().toString(); for (Map.Entry<String, Object> entry : countries.entrySet()) { if(entry.getValue().toString().equals(newLocaleValue)){ FacesContext.getCurrentInstance() .getViewRoot().setLocale((Locale)entry.getValue()); } } } }
以下代碼來自welcome.properties。
welcome.jsf = Happy learning JSF 2.0下載 Internationalization.zip
將生成的WAR文件從目標(biāo)文件夾復(fù)制到Tomcat部署文件夾,并運行Tomcat-Install-folder/bin/startup.bat。
Tomcat完成啟動后,在瀏覽器地址欄中鍵入以下URL。
http://localhost:8080/simple-webapp/demo.xhtml
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: