JSF的国际化(Internnationalization)讯息处理是基于Java对国际化的支持,您可以在一个讯息资源文件中统一管理讯息资源,资源文件的名称是.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_cn.properties
没有指定语言与地区的basename是预设的资源档名称,JSF会根据浏览器送来的Accept-Language
header中的内容来决定该使用哪一个资源档名称,例如:
Accept-Language: zh_cn, en-US, en
如果浏览器送来这些header,则预设会使用繁体中文,接着是美式英文,再来是英文语系,如果找不到对应的讯息资源文件,则会使用预设的讯息资源文件。
由于讯息资源文件必须是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为Java Unicode
Escape格式,例如您可以先在讯息资源文件中写下以下的内容:
titleText=JSF示范
hintText=请输入名称与密码
nameText=名称
passText=密码
commandText=送出
然后使用JDK的工具程序native2ascii来转换,例如:
native2ascii -encoding Big5 messages_zh_cn.txt
messages_zh_cn.properties
转换后的内容会如下:
- messages_zh_cn.properties
titleText=JSF\u793a\u7bc4
hintText=\u8acb\u8f38\u5165\u540d\u7a31\u8207\u5bc6\u78bc
nameText=\u540d\u7a31
passText=\u5bc6\u78bc
commandText=\u9001\u51fa
接下来您可以使用<f:loadBundle>卷标来指定加载讯息资源,一个例子如下:
<%@ taglib uri="http:
prefix="f" %>
<%@ taglib uri="http:
prefix="h" %>
<%@page contentType="text/html;charset=UTF8"
%>
<f:view>
<f:loadBundle basename="com.tntxia.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>
注意,Properties文件必须要放在包里面,否则1.5以后的JDK不法找到
如此一来,如果您的浏览器预设接受zh_cn语系的话,则页面上就可以显示中文,否则预设将以英文显示,也就是messages.properties的内容,为了能显示多国语系,我们设定网页编码为UTF8。
<f:view>可以设定locale属性,直接指定所要使用的语系,例如:
<f:view locale="zh_cn"
>
<f:loadBundle basename="messages"
var
="msgs"
/>
直接指定以上的话,则会使用繁体中文来显示,JSF会根据<f:loadBundle>的basename属性加上<f:view>的locale属性来决定要使用哪一个讯息资源文件,就上例而言,就是使用
messages_zh_cn.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_cn</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_cn" itemLabel="#{msgs.zh_cnText}"/>
<f:selectItem itemValue="en" itemLabel="#{msgs.enText}"/>
</h:selectOneRadio>
相关推荐
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 自定义...