2013-07-18 59 views
0

我faces-config.xml文件的一部分是这样的:JSF 2 - 多语言支持问题

<locale-config> 
    <default-locale>el</default-locale> 
    <supported-locale>en</supported-locale> 
</locale-config> 
<resource-bundle> 
    <base-name>com.application.model.resources.Labels</base-name> 
    <var>labels</var> 
</resource-bundle> 

我也有相应的包/文件夹中的文件Labels_el.properties和Labels_en.properties。

问题是这样的:

火狐

当我启动应用程序,所有文字都希腊语(默认环境)。每当我点击一个commandButton或commandLink时,所有文本都会以英文进行更改。但是,语言环境仍然是希腊语(el)。

应用程序可以正常启动在希腊语言和页面导航过程中的语言保持不变。我有一个可以更改语言环境的下拉列表。当我将语言环境更改为英语(en)时,该页面会正确刷新。之后,当我点击一个commandButton或commandLink时,语言环境的值仍然是英文,但文本再次变为希腊语。

因此,问题是,页面导航过程中,Firefox中的语言更改为英语,并在Chrome变为希腊(语言环境不会改变,除非我从下拉列表中选择所需的)。

此问题的任何解决方案?

+1

你在哪里保持区域?它必须保存在session范围内,你必须强迫你的视图中使用它,[声明](http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_view.html)的'locale'属性为'f:view'标签。 –

+0

你是对的!使用f:view标签是解决方案! :) – Puma

+0

你想让我把它作为答案发布吗?否则,你可以写你自己的答案,以纪念线程作为封闭当然;-) –

回答

1

你必须使用<f:view/>标签以其locale属性,(如果你只想要你的应用程序的特定部分是用不同的语言或其他范围)应绑定到SessionScoped豆变量。这将呈现基于该语言环境值的当前视图。