繁体   English   中英

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

[英]JSF 2.0: wrong language selected after deploying to another server

我使用JSF 2.0创建了一个Web应用程序。 它支持在HTTP标头中发送的德语(默认)和英语(由语言选择)。

在我的本地服务器(Tomcat 6.0)上,自动语言选择是正确的,如果我以“德语”为最高优先级,则该应用程序为德语。 英语也一样。

但是现在我将其部署到了我的Web服务器(使用ModJk在Apache Web服务器之后的Tomcat 6.0),现在只有英语。 但是http标头仍然相同:

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

我的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>

正确部署了de.citkomm.tbm.locale中的文件“ Lang.properties”和“ Lang_en.properties”。

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

提前致谢!

这很奇怪...我认为当您验证HTTP标头仍包含正确的Accept-Language ,mod_jk不应对此产生影响。 为了进行健全性检查,如果您位于同一内部网络上,则可以尝试直接访问Tomcat Web应用程序,并完全跳过Apache Web Server,但是我怀疑这是问题所在。

如果在Tomcat服务器环境上部署了任何公共库,则可能正在使用其他版本的JSF实现,可能是具有国际化错误的早期版本。

我已经看到这种情况发生在JBoss和Glassfish之类的应用程序服务器上,这些服务器默认情况下都预先打包了自己的JSF实现。 同样,相对于出现在WEB-INF/lib任何JSF实现,JBoss / Glassfish类加载器也优先考虑捆绑的JSF实现库。

但是,Tomcat 6默认情况下不会执行此操作,但是我仍然怀疑某种类加载问题。 仔细检查Web服务器上的公共库和已部署的库,并验证那里是否存在正确的JSF实现。

好吧,我不知道为什么 tomcat使用我的Ubuntu Server的环境变量,但是确实如此。

将LANG从“ en_US.UTF-8”更改为“ de_DE.UTF-8”,现在一切正常。 :S

不管怎么说,还是要谢谢你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM