JSF 2.0:部署到另一台服务器后选择了错误的语言



我用JSF 2.0做了一个web应用程序。它支持德语(默认)和英语(由在http-header中发送的语言选择)。

在我的本地服务器(Tomcat 6.0)上,自动语言选择是正确的,如果我将"german"设置为最高优先级,那么应用程序就是德语。英文也一样。

但是现在我把它部署到我的web服务器(Tomcat 6.0后面的Apache web服务器,使用ModJk),现在它只有英文。但是http头仍然是一样的:

Accept-Language:      de-de,en-us;q=0.8,de;q=0.5,en;q=0.3
(Fetched from Firebug)

my faces-config.xml中的语言包条目如下:

<application>
    <locale-config>
        <default-locale>de</default-locale>
        <supported-locale>en</supported-locale>
    </locale-config>
    <resource-bundle>
        <base-name>de.citkomm.tbm.locale.Lang</base-name>
        <var>lang</var>
    </resource-bundle>
</application>
"朗

文件。和"Lang_en. properties"。de.citkomm.tbm.locale中的"属性"已正确部署。

这是Apache + ModJk + Tomcat 6.0的问题还是配置错误?有人知道为什么Tomcat选择了错误的语言吗?

提前感谢!

真奇怪…我认为mod_jk不应该影响这一点,因为您验证HTTP头仍然包含正确的Accept-Language。为了安全检查,如果你在同一个内部网络,那么你可以尝试直接访问Tomcat web应用程序,并跳过Apache web服务器,但我怀疑这是问题所在。

如果您在Tomcat服务器环境中部署了任何公共库,则可能使用了JSF实现的不同版本,可能是具有国际化错误的较早版本。

我在JBoss和Glassfish等应用服务器上看到过这种情况,它们默认情况下预先打包了自己的JSF实现。同样,JBoss/Glassfish类加载器也优先选择了绑定的JSF实现库,而不是WEB-INF/lib中出现的任何JSF实现。

Tomcat 6默认情况下不这样做,但我仍然怀疑是某种类加载问题。再次检查您在web服务器上的公共库和部署库,并确认那里存在正确的JSF实现。

嗯,我不知道为什么 tomcat使用我的Ubuntu服务器的环境变量,但是它确实使用了。

将LANG从"en_US。"UTF-8"到"de_DE。UTF-8",现在一切都好了。: S

谢谢!

相关内容

  • 没有找到相关文章

最新更新