﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Perrin's Spaces</title><link>http://www.blogjava.net/perrin/</link><description>Nothing venture Nothing have</description><language>zh-cn</language><lastBuildDate>Sat, 20 Jun 2026 09:33:06 GMT</lastBuildDate><pubDate>Sat, 20 Jun 2026 09:33:06 GMT</pubDate><ttl>60</ttl><item><title>JSF的中文化与国际化</title><link>http://www.blogjava.net/perrin/articles/160431.html</link><dc:creator>Perrin.Du</dc:creator><author>Perrin.Du</author><pubDate>Wed, 14 Nov 2007 01:36:00 GMT</pubDate><guid>http://www.blogjava.net/perrin/articles/160431.html</guid><wfw:comment>http://www.blogjava.net/perrin/comments/160431.html</wfw:comment><comments>http://www.blogjava.net/perrin/articles/160431.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/perrin/comments/commentRss/160431.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/perrin/services/trackbacks/160431.html</trackback:ping><description><![CDATA[<div><span><span>下面转载别人的方法(在编辑过程中不小心丢失了原文章地址,在此向作者致以歉意以及感谢),也就是我参考的主要方法.但完全依照下面所述并未解决我的问题.<br />
我用的是MyEclipse5.1.1 GA ,Eclipse3.2.2 ,JSF是sun 的参考实现1.1.x<br />
我首先安装了</span></span><span><span>Eclipse ResourceBundle Editor(http://sourceforge.net/project/showfiles.php?group_id=125041),可以用它方便的创建资源包,但是我在.properties文件中写中文后保存文件时,eclipse就会弹出 "保存问题"警告,说某些字符无法用"ISO-8859-1"来对应(翻译的不准确,大概是这个意思).<br />
后来我就在google上找帮助,有文章说用</span></span><span><span>Eclipse Properties Editor 4.8.2(http://propedit.sourceforge.jp/eclipse/updates/ 直接在eclipse中更新),于是我又在eclipse下安装了它,重新启动eclipse后发现,里面的</span></span><span><span>.properties文件的图标也变化了,图标里有一个大写的P,呵呵,心里隐约觉得问题应该解决了,于是在原本建好的</span></span><span style="font-size: 9pt">resource_zh_CN.properties中写中文,保存,OK!然后在浏览器里查看.中文正常显示了.<img src="http://st.blog.163.com/style/common/htmlEditor/portrait/face/preview/face12.gif"  alt="" /></span><br />
<span><span>对了,在设置上,我对MyEclipse 中的各个editor的编码设置都是utf-8<br />
</span></span><span></span><span><span>-------------------------------------------------------------------------------------------<br />
&nbsp;&nbsp; </span></span><span style="font-size: 9pt; font-family: 宋体">对于各种不同的</span><span style="font-size: 9pt">Java</span><span style="font-size: 9pt; font-family: 宋体">应用，国际化的问题总会给我们非英文用户带来一些麻烦，在</span><span style="font-size: 9pt">JSF</span><span style="font-size: 9pt; font-family: 宋体">中也一样，在实践中碰到了一系列不容易解决的问题，最终解决的大部分的问题，也完成了一个可以运行的小项目，我把我的一些经验拿出来和大家分享一下，希望能让大家在这些地方少走一些弯路。</span></div>
<p><span style="font-size: 9pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Java</span><span style="font-size: 9pt; font-family: 宋体">中的国际化是由</span><span style="font-size: 9pt"> java.util.Locale </span><span style="font-size: 9pt; font-family: 宋体">类支持的，中文对应的代码是&#8220;</span><span style="font-size: 9pt">zh</span><span style="font-size: 9pt; font-family: 宋体">&#8221;，所以我们要在</span><span style="font-size: 9pt">JSF</span><span style="font-size: 9pt; font-family: 宋体">中使用中文的话，需要在我们的</span><span style="font-size: 9pt"> faces-config.xml </span><span style="font-size: 9pt; font-family: 宋体">中做一些简单的配置了，加入对中文的支持，当然如果需要支持更多的语言的话，多加几个</span><span style="font-size: 9pt">&lt;supported-locale&gt;</span><span style="font-size: 9pt; font-family: 宋体">就可以了。</span></p>
<p align="center"></p>
<p><span style="font-size: 9pt">&nbsp;</span></p>
<span>
<div><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">faces-config</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">application</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">message-bundle</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">resource</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">message-bundle</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">locale-config</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><font size="+0"><font size="+0"><span style="color: #0000ff">&lt;</span><span style="color: #800000">default-locale</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">zh</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">default-locale</span><span style="color: #0000ff">&gt;</span></font></font><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">supported-locale</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">en</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">supported-locale</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">locale-config</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">application</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">faces-config</span><span style="color: #0000ff">&gt;</span></div>
</span>
<p><br />
&nbsp;</p>
<p><span style="font-size: 9pt; font-family: 宋体">这里定义了一个</span><span style="font-size: 9pt">&lt;message-bundle&gt;resource&lt;/message-bundle&gt;</span><span style="font-size: 9pt; font-family: 宋体">指的是资源文件所在的位置和文件名，这里我们把资源文件放在</span><span style="font-size: 9pt">source</span><span style="font-size: 9pt; font-family: 宋体">根目录下名称为</span><span style="font-size: 9pt">resource.properties</span><span style="font-size: 9pt; font-family: 宋体">，这个是英文的资源文件，另外一个存放中文信息的资源文件名为</span><span style="font-size: 9pt">resource_zh.properties</span><span style="font-size: 9pt; font-family: 宋体">。</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">接下来，我们可以在这些资源文件中加入我们需要的资源信息。推荐大家一个</span><span style="font-size: 9pt">Eclipse</span><span style="font-size: 9pt; font-family: 宋体">的插件来写我们的资源文件，这个插件叫做</span><span style="font-size: 9pt">Eclipse ResourceBundle Editor Plugin</span><span style="font-size: 9pt; font-family: 宋体">，我们可以很方便的在里面写中文信息，它会自动的转换为</span><span style="font-size: 9pt">UTF-8</span><span style="font-size: 9pt; font-family: 宋体">编码的信息，大家可以到这个地方去下载这个插件</span><span style="font-size: 9pt"><a href="http://resourcebundleeditor.com/ess/rbe/home.do">http://resourcebundleeditor.com/ess/rbe/home.do</a></span><span style="font-size: 9pt; font-family: 宋体">。使用起来很简单，这里就不再多说了。<br />
</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">在</span><span style="font-size: 9pt">JSP</span><span style="font-size: 9pt; font-family: 宋体">文件中使用这些资源之前，需要加入一下这些东西：</span></p>
<p><span style="font-size: 9pt"><font size="+0">&lt;%@ page contentType="text/html;charset=utf-8"%&gt;</font></span></p>
<p><span style="font-size: 9pt; font-family: 宋体">在</span><span style="font-size: 9pt">HTML</span><span style="font-size: 9pt; font-family: 宋体">的</span><span style="font-size: 9pt">head</span><span style="font-size: 9pt; font-family: 宋体">中加入：</span></p>
<p><span style="font-size: 9pt"><font size="+0">&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;</font></span></p>
<p><span style="font-size: 9pt; font-family: 宋体">下面，我们就可以在我们的页面中绑定并使用这些资源信息：</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">使用之前要加载一下资源文件，使用这个</span><span style="font-size: 9pt">Tag</span><span style="font-size: 9pt; font-family: 宋体">：</span></p>
<p><span style="font-size: 9pt"><font size="+0">&lt;f:loadBundle basename="resource" var="messages"/&gt;</font></span></p>
<p><span style="font-size: 9pt; font-family: 宋体">我在这里给消息起了个别名</span><span style="font-size: 9pt">messages</span><span style="font-size: 9pt; font-family: 宋体">，以后就可以通过这个别名来使用资源文件。</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">比如我使用</span><span style="font-size: 9pt"> &lt;h:outputText&gt; </span><span style="font-size: 9pt; font-family: 宋体">来引用资源信息</span><span style="font-size: 9pt">schedule.label.starttime</span><span style="font-size: 9pt; font-family: 宋体">可以这么用。</span></p>
<p><span style="font-size: 9pt">&lt;h:outputText value="#{messages['schedule.label.starttime']}"/&gt;</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">是不是可以用了呢？不过别急，用是能用，如果你在</span><span style="font-size: 9pt"> JSF </span><span style="font-size: 9pt; font-family: 宋体">中使用了</span><span style="font-size: 9pt"> Tiles </span><span style="font-size: 9pt; font-family: 宋体">的话，就会出现一些问题了，我们如果使用了</span><span style="font-size: 9pt"> &lt;h:inputText&gt; </span><span style="font-size: 9pt; font-family: 宋体">这样的输入框的话，当你输入中文并提交，你就会发现，你输入的文字变成这样的了&#8220;</span><span style="font-size: 9pt">\u5DF2\u5B8C\u6210</span><span style="font-size: 9pt; font-family: 宋体">&#8221;，曾经为了这个问题，找解决方案花了我三周的时间。首先把问题定位到</span><span style="font-size: 9pt"> Tiles </span><span style="font-size: 9pt; font-family: 宋体">上，因为如果不使用</span><span style="font-size: 9pt"> Tiles </span><span style="font-size: 9pt; font-family: 宋体">的话，是没有这个问题的，但是</span><span style="font-size: 9pt"> Tiles </span><span style="font-size: 9pt; font-family: 宋体">又不能不用的，最后发现其实很容易的，只要在</span><span style="font-size: 9pt"> &lt;f:view&gt; </span><span style="font-size: 9pt; font-family: 宋体">中加上</span><span style="font-size: 9pt"> locale=&#8221;zh&#8221; </span><span style="font-size: 9pt; font-family: 宋体">就可以了，如果需要的话，可以把这个属性动态化，满足国际化的需要，就像这样</span><span style="font-size: 9pt">&lt;f:view locale="#{userProfile.locale}"&gt;</span><span style="font-size: 9pt; font-family: 宋体">。</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">这样的话，一切都正常了，使用</span><span style="font-size: 9pt"> Tiles </span><span style="font-size: 9pt; font-family: 宋体">也没有问题的。</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">今天有朋友问了我关于</span><span style="font-size: 9pt"> JavaScript </span><span style="font-size: 9pt; font-family: 宋体">中的中文乱码问题，我在我的</span><span style="font-size: 9pt">JSP</span><span style="font-size: 9pt; font-family: 宋体">中找了一段代码拿出来看看：</span></p>
<p><span style="font-size: 9pt">&lt;h:commandLink action=".." (!confirm('#{messages['system.msg.confirmdel']}')) return false;"&gt;</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">这样的话，里面的中文是可以正常显示的，下面我给大家一些建议吧，希望对大家有一些帮助。</span></p>
<p><span style="font-size: 9pt"><span>1.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9pt; font-family: 宋体">所有文字信息全部写在资源文件中，通过引用其别名来使用这些信息；</span></p>
<p><span style="font-size: 9pt"><span>2.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9pt; font-family: 宋体">所有的中文要转换成</span><span style="font-size: 9pt"> UTF-8 </span><span style="font-size: 9pt; font-family: 宋体">编码，可以使用</span><span style="font-size: 9pt">Eclipse ResourceBundle Editor Plugin</span><span style="font-size: 9pt; font-family: 宋体">来解决；</span></p>
<p><span style="font-size: 9pt"><span>3.<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9pt; font-family: 宋体">页面编码方式定义成</span><span style="font-size: 9pt"> UTF-8 </span><span style="font-size: 9pt; font-family: 宋体">，不要使用其默认值。</span></p>
<p><span style="font-size: 9pt; font-family: 宋体">当然，这只是我在使用中积累的一点小小的经验了，希望能对大家有一点帮助，如果大家发现有什么不正确就请赐教，如果更好的解决方案，也拿出来和大家分享吧，因为我们的分享可能会给大家节省更多的时间。</span></p>
<img src ="http://www.blogjava.net/perrin/aggbug/160431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/perrin/" target="_blank">Perrin.Du</a> 2007-11-14 09:36 <a href="http://www.blogjava.net/perrin/articles/160431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>