如果使用JSP作为JSF的视图,那么在每个也没可以用<f:loadBundle>加载国际化文件,但是使用Faclets如何进行国际化文件加载呢?我的做法如下
1. 在faces-config.xml中增加如下配置:
<application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> <locale-config> <default-locale>zh_CN</default-locale> </locale-config> <message-bundle>message</message-bundle> </application>2. 在/WEB-INF/classes/下增加message.properties和message_zh_CN.properties两个文件,一个是默认资源文件,一个是中文资源文件。可以根据自己应用的需要添加其他语言支持。
3. 在模版文件,比如/WEB-INF/facelets/template.xhtml中加载这个资源
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <f:loadBundle basename="message" var="msg"/> ...... </html>4. 在使用这个模版的客户端文件中不必再进行加载,直接使用即可,例如welcome.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" template="/WEB-INF/facelets/template.xhtml"> <ui:define name="title"> ${msg.app_title} </ui:define> .... </ui:composition>因为我使用的是MyFaces JSF 1.1的实现,据说JSF1.2可以完全在faces-config.xml中进行配置,有机会试试~~
