网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.用Jbuilder 2005开发Java Applet.
.Eclipse走上榜首照亮Java众生.
.一针见血谈谈面向对象的思维方法.
.Candle点亮你的Web应用(CandleRM.
.J2ME三种低级用户界面事件处理技.
.多线程设计要点.
.往JDK里加入一个安全提供者以获取.
.使用BINCompiler转换游戏资源文件.
.开源面向对象数据库:db4o 查询方.
.在JBoss中配置多个数据库和数据源.
.使用 EJB 组件你需要了解些什么呢.
.对等(P2P)计算实际使用之发展历.
.Java 技术在嵌入式系统中的应用详.
.qmail的配置.
.每周新书推荐:IBM & Java.
.[JAVA100例]040、压缩和解压文件.
.人们眼中的安全.
.Microsoft.Net的Java实现.
.详解Java语言入门级十二大特色.
.索爱部分机型支持同时播放多个声.

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

发表日期:2008-1-5



  对于各种不同的Java应用,国际化的问题总会给我们非英文用户带来一些麻烦,在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 也没有问题的。

  今天有朋友问了我关于 javascript 中的中文乱码问题,我在我的JSP中找了一段代码拿出来看看:

<h:commandLink id="delete" action=".." onclick="if (!confirm('#{messages['system.msg.confirmdel']}')) return false;">
  这样的话,里面的中文是可以正常显示的,下面我给大家一些建议吧,希望对大家有一些帮助。

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

  2. 所有的中文要转换成 UTF-8 编码,可以使用Eclipse ResourceBundle Editor Plugin来解决;
 
  3. 页面编码方式定义成 UTF-8 ,不要使用其默认值。
 
  当然,这只是我在使用中积累的一点小小的经验了,希望能对大家有一点帮助,假如大家发现有什么不正确就请赐教,假如更好的解决方案,也拿出来和大家分享吧,因为我们的分享可能会给大家节省更多的时间。

上一篇:通过Java Swing看透MVC设计模式 人气:857
下一篇:循速渐进学用Session Bean(四) 人气:1284
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐