JSF的国际化(Internnationalization)信息处理是基于Java对国际化的支援,
您可以在一个信息资源档中统一管理信息资源,资源文件的名称是.properties,
而內容是名称与值的配对,例如:
messages.properties
titleText=JSF Demo hintText=Please input your name and password nameText=name passText=password commandText=Submit
资源档名称由basename加上语言与地区来组成,例如:
basename.properties basename_en.properties basename_zh_TW.properties 沒有指定语言与地区的basename是预设的资源档名称,JSF会根据浏览器送來的Accept-Language header中的內容来決定该使用哪一个资源档名称,例如:
Accept-Language: zh_TW, en-US, en
如果浏览器送来这些header,则预设会使用繁体中文,接著是美式英文,再来是英文语系,如果找不到对应的信息资源档,则会使用预设的信息资源档。
由于信息资源档必須是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为Java Unicode Escape格式,例如您可以先在信息资源档中写下以下的內容:
messages_zh_TW.txt
titleText=JSF示範 hintText=請輸入名稱與密碼 nameText=名稱 passText=密碼 commandText=送出
然后使用JDK的工具程式native2ascii来转换,例如:
native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties
转换后的內容会如下:
messages_zh_TW.properties
titleText=JSFu793au7bc4 hintText=u8acbu8f38u5165u540du7a31u8207u5bc6u78bc nameText=u540du7a31 passText=u5bc6u78bc commandText=u9001u51fa
(所有资源文件放入你的JFS应用的WEB-INF/classes目录下)
接下来您可以使用<f:loadBundle>标记來指定载入信息资源,一个例子如下:
index.jsp
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@page contentType="text/html;charset=UTF8"%>
<f:view> <f:loadBundle basename="messages" var="msgs"/>
<html> <head> <title><h:outputText value="#{msgs.titleText}"/></title> </head> <body>
<h:form> <h3><h:outputText value="#{msgs.hintText}"/></h3> <h:outputText value="#{msgs.nameText}"/>: <h:inputText value="#{user.name}"/><p> <h:outputText value="#{msgs.passText}"/>: <h:inputSecret value="#{user.password}"/><p> <h:commandButton value="#{msgs.commandText}" actionListener="#{user.verify}" action="#{user.outcome}"/> </h:form>
</body> </html>
</f:view>
如此一來,如果您的浏览器预设接受zh_TW语系的话,则页面上就可以显示中文,否則预设将以英文显示,也就是messages.properties的內容,为了能显示多国语系,我们设定网页编码为UTF8。
<f:view>可以设定locale属性,直接指定所要使用的语系,例如:
<f:view locale="zh_TW"> <f:loadBundle basename="messages" var="msgs"/>
直接指定以上的話,则会使用繁体中文来显示,JSF会根据<f:loadBundle>的basename属性加上<f: view>的locale属性來決定要使用哪一个信息资源档,就上例而言,就是使用messages_zh_TW.properties,如果设定 为以下的话,就会使用messages_en.properties:
<f:view locale="en"> <f:loadBundle basename="messages" var="msgs"/>
您也可以在faces-config.xml中设定语系,例如:
<faces-config> <application> <local-config> <default-locale>en</default-locale> <supported-locale>zh_TW</supported-locale> </local-config> </application>
..... </faces-config>
在<local-config>一定有一个<default-locale>,而<supported-locale>可以有好几个,这告訴JSF您的应用程序支援哪些语系。
当然,如果您可以提供一个选项让使用者选择自己的语系会是更好的方式,例如根据user这个Bean的locale属性来决定页面语系:
<f:view locale="#{user.locale}"> <f:loadBundle basename="messages" var="msgs"/>
在页面中设定一个表单,可以让使用者选择语系,例如设定单选钮:
<h:selectOneRadio value="#{user.locale}"> <f:selectItem itemValue="zh_TW" itemLabel="#{msgs.zh_TWText}"/> <f:selectItem itemValue="en" itemLabel="#{msgs.enText}"/> </h:selectOneRadio>
|
FacesContext context = FacesContext.getCurrentInstance();
String bundleName = context.getApplication().getMessageBundle();
ResourceBundle messageBundle = ResourceBundle.getBundle(bundleName,context.getViewRoot().getLocale());
String prompt = messageBundle.getString(key);
分享到:
相关推荐
JSF国际化范例,源代码 JSF国际化范例,源代码 JSF国际化范例,源代码
一个例子:jsf国际化
NULL 博文链接:https://zhanghong.iteye.com/blog/852107
jsf实现多语言国际化demo
JSF国际化源代码,可加入eclipse工程使用.
jsf框架!国际化资源文件!全局化!本地化
datatable行样式 frameset及树型目录dtree jsf滚动组件 jsf实现排序功能 jsf datetable行编辑的实现 jsf事件 jsf国际化 jsf验证与消息
jsf1.2的国际化例子,特殊简单,想学习的初学者可以看下。老鸟不用看。
此PPT介绍了1、JSF预准备 2、 JSF开发环境搭建 3、JSF入门开发 4、 JSF事件处理机制 5、 JSF国际化 6 、JSF验证器 7、JSF的UI(标签库)
第9章 JSF的托管Bean和国际化课件及源程序 Java国际化实例 I18N_test managedBeanTest
部分内容截取: 1. 入门 1.1 简介JSF 1.2 第一个JSF程序 1.3简单的导航 Navigation 1.4导航规则设置 1.5 JSF Expression Language 1.6国际化信息 ......
o 国际化讯息 Managed Beans JSF 使用 Bean 来达到逻辑层与表现层分离的目的,Bean 的管理集中在组态档案中,您只要修改组态档案,就可以修改 Bean 之间的相依关系。 o Backing Beans o Beans 的组态与设定 o Beans...
部门人员一对多的CRUD操作 hibernate: 管理实体关系映射 spring:数据源配置与获得session IOC依赖注入 和 AOP 事务管理 jsf : backing bean的操作 ... jsf 信息国际化以资源绑定 jsf 表单验证 jsf 导航设定
JSF主要由两个部分组成:一套功能强大的API函数,用来表示UI组件、管理组件状态、处理事件、进行输入有效性验证,以及对国际化和可访问性的支持;一套包含各种页面元素的并允许自定义的JSP标签库,用来在JSP页面中...
《JavaServer Faces 2.0完全参考手册》对所有jsf功能都进行了解释,包括请求处理生命周期、托管bean、页面导航、组件开发、ajax、验证器、国际化和安全。贯穿全书的专家组意见提供了关于jsf设计的内部信息。 推荐...
NULL 博文链接:https://redhacker.iteye.com/blog/1059967
支持jsf2,p标签,h标签,rich标签,f标签,国际化多语言支持,ajax,以及项目的完整搭建,异常处理机制,jpa的数据操作控制等
使用jsf1.2+spring3.0+hibernate3.3实现集成,利用annotation实现自动对象管理注入,用户表的登录增删改查操作,包括验证码ajax集成,消息机制,国际化处理,自定义转换器,自定义验证器等 qq:38732796 欢迎讨论
1.1 简介 JSF 1.2 第一个 JSF 程序 1.3 简单的导航 Navigation 1.4 导航规则设置 1.5 JSF Expression Language 1.6 国际化信息 2. Managed Beans
1.6国际化信息 2. Managed Beans 2.1 Backing Beans 2.2 Beans的配置与设定 2.3 Beans上的List, Map 3. 数据转换与验证 3.1 标准转换器 3.2自定义转换器 3.3标准验证器 3.4自定义验证器 3.5错误信息处理 3.6 自定义...