科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道JSF的中文化与国际化的简便方法

JSF的中文化与国际化的简便方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

JSF的中文化与国际化的简便方法

作者:dxaw 来源:赛迪网技术社区 2007年11月3日

关键字: 方法 国际化 JSF

  • 评论
  • 分享微博
  • 分享邮件

Java中的国际化是由 java.util.Locale 类支持的,中文对应的代码是“zh”,所以我们要在JSF中使用中文的话,需要在我们的 faces-config.xml 中做一些简单的配置了,加入对中文的支持,当然如果需要支持更多的语言的话,多加几个<supported-locale>就可以了。

<faces-config>
<application>
<message-bundle>resource</message-bundle>
<locale-config>
<default-locale>zh</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
</application>
</faces-config>

这里定义了一个<message-bundle>resource</message-bundle>指的是资源文件所在的位置和文件名,这里我们把资源文件放在source根目录下名称为resource.properties,这个是英文的资源文件,另外一个存放中文信息的资源文件名为resource_zh.properties。

接下来,我们可以在这些资源文件中加入我们需要的资源信息。推荐大家一个Eclipse的插件来写我们的资源文件,这个插件叫做Eclipse ResourceBundle Editor Plugin,我们可以很方便的在里面写中文信息,它会自动的转换为UTF-8编码的信息,大家可以到这个地方去下载这个插件http://resourcebundleeditor.com/ess/rbe/home.do。使用起来很简单,这里就不再多说了。

在JSP文件中使用这些资源之前,需要加入一下这些东西:

<%@ page contentType="text/html;charset=utf-8"%>

在HTML的head中加入:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

下面,我们就可以在我们的页面中绑定并使用这些资源信息:

使用之前要加载一下资源文件,使用这个Tag:

<f:loadBundle basename="resource" var="messages"/>

在这里给消息起了个别名messages,以后就可以通过这个别名来使用资源文件。

比如使用 <h:outputText> 来引用资源信息schedule.label.starttime可以这么用。

<h:outputText value="#{messages['schedule.label.starttime']}"/>

是不是可以用了呢?不过别急,用是能用,如果你在 JSF 中使用了 Tiles 的话,就会出现一些问题了,我们如果使用了 <h:inputText> 这样的输入框的话,当你输入中文并提交,你就会发现,你输入的文字变成这样的了“\u5DF2\u5B8C\u6210”,首先把问题定位到 Tiles 上,因为如果不使用 Tiles 的话,是没有这个问题的,但是 Tiles 又不能不用的,最后发现其实很容易的,只要在 <f:view> 中加上 locale=”zh” 就可以了,如果需要的话,可以把这个属性动态化,满足国际化的需要,就像这样

<f:view locale="#{userProfile.locale}">。

这样的话,一切都正常了,使用 Tiles 也没有问题的。

下面给大家一些建议,希望对大家有一些帮助。

1. 所有文字信息全部写在资源文件中,通过引用其别名来使用这些信息;

2. 所有的中文要转换成 UTF-8 编码,可以使用Eclipse ResourceBundle Editor Plugin来解决;

3. 页面编码方式定义成 UTF-8 ,不要使用其默认值。

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章