`
tntxia
  • 浏览: 1488212 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JSF的国际化

阅读更多

国际化讯息

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_cn.properties

  没有指定语言与地区的basename是预设的资源档名称,JSF会根据浏览器送来的Accept-Language header中的内容来决定该使用哪一个资源档名称,例如:


Accept-Language: zh_cn, en-US, en


  如果浏览器送来这些header,则预设会使用繁体中文,接着是美式英文,再来是英文语系,如果找不到对应的讯息资源文件,则会使用预设的讯息资源文件。

  由于讯息资源文件必须是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为Java Unicode Escape格式,例如您可以先在讯息资源文件中写下以下的内容:

  • messages_zh_cn.txt
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>卷标来指定加载讯息资源,一个例子如下:

  • index.jsp
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="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国际化范例,源代码

    jsf国际化

    一个例子:jsf国际化

    JSF2中实现国际化

    NULL 博文链接:https://zhanghong.iteye.com/blog/852107

    jsf实现多语言国际化demo

    jsf实现多语言国际化demo

    JSF.rar_JSF_eclipse工程

    JSF国际化源代码,可加入eclipse工程使用.

    jsf框架和国际化

    jsf框架!国际化资源文件!全局化!本地化

    jsf常用文档datatable行样式,frameset及树型目录dtree,jsf滚动组件

    datatable行样式 frameset及树型目录dtree jsf滚动组件 jsf实现排序功能 jsf datetable行编辑的实现 jsf事件 jsf国际化 jsf验证与消息

    jsf简单的国际化(jsf1.2)

    jsf1.2的国际化例子,特殊简单,想学习的初学者可以看下。老鸟不用看。

    JSF学习用的PPT

    此PPT介绍了1、JSF预准备 2、 JSF开发环境搭建 3、JSF入门开发 4、 JSF事件处理机制 5、 JSF国际化 6 、JSF验证器 7、JSF的UI(标签库)

    第9章 JSF的托管Bean和国际化课件及源程序

    第9章 JSF的托管Bean和国际化课件及源程序 Java国际化实例 I18N_test managedBeanTest

    JSF教程 中文版

    部分内容截取: 1. 入门 1.1 简介JSF 1.2 第一个JSF程序 1.3简单的导航 Navigation 1.4导航规则设置 1.5 JSF Expression Language 1.6国际化信息 ......

    JSF基础教程 简体中文

    o 国际化讯息 Managed Beans JSF 使用 Bean 来达到逻辑层与表现层分离的目的,Bean 的管理集中在组态档案中,您只要修改组态档案,就可以修改 Bean 之间的相依关系。 o Backing Beans o Beans 的组态与设定 o Beans...

    整合jsf hibernate spring实例

    部门人员一对多的CRUD操作 hibernate: 管理实体关系映射 spring:数据源配置与获得session IOC依赖注入 和 AOP 事务管理 jsf : backing bean的操作 ... jsf 信息国际化以资源绑定 jsf 表单验证 jsf 导航设定

    JSF标签,JSF的使用

    JSF主要由两个部分组成:一套功能强大的API函数,用来表示UI组件、管理组件状态、处理事件、进行输入有效性验证,以及对国际化和可访问性的支持;一套包含各种页面元素的并允许自定义的JSP标签库,用来在JSP页面中...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    《JavaServer Faces 2.0完全参考手册》对所有jsf功能都进行了解释,包括请求处理生命周期、托管bean、页面导航、组件开发、ajax、验证器、国际化和安全。贯穿全书的专家组意见提供了关于jsf设计的内部信息。 推荐...

    ADF(JSF)框架中使用国际化

    NULL 博文链接:https://redhacker.iteye.com/blog/1059967

    jsf2项目开发及所需各种标签集合

    支持jsf2,p标签,h标签,rich标签,f标签,国际化多语言支持,ajax,以及项目的完整搭建,异常处理机制,jpa的数据操作控制等

    jsf1.2+spring3.0+hibernate3.3例子-单表增删改查

    使用jsf1.2+spring3.0+hibernate3.3实现集成,利用annotation实现自动对象管理注入,用户表的登录增删改查操作,包括验证码ajax集成,消息机制,国际化处理,自定义转换器,自定义验证器等 qq:38732796 欢迎讨论

    JSF入门必看

    1.1 简介 JSF 1.2 第一个 JSF 程序 1.3 简单的导航 Navigation 1.4 导航规则设置 1.5 JSF Expression Language 1.6 国际化信息 2. Managed Beans

    JSF入门pdf

    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 自定义...

Global site tag (gtag.js) - Google Analytics