是ResourceBundle后退的决议破Resin3x?
-
24-09-2019 - |
题
鉴于以下ResourceBundle性文件:
- 消息。性能
- messages_en.性能
- messages_es.性能
- messages_{的一些区域}.性能
注:消息。性质包含了所有的邮件对于默认的区域设置。messages_en.性能是真空的-这是仅有的正确性。messages_en.性将回落到消息。属性!
并给予以下config params在web.xml:
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>messages</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name>
<param-value>en</param-value>
</context-param>
我希望,如果所选择的区域设置'es',而一个资源不是翻译的在'es',那么它将回落到'en',最后的消息。属性'(由于messages_en.性能是空的)。
这是如何工作的码头。我们还测试了这个WebSphere。
树脂的问题
问题是,当我得到树脂(3.0.23).回退的决议并没有在所有的工作!为了得到一个消息显示,我必须做到以下几点:
- 重命名的消息。性messages_en.特性(基本上, 交换 内容的信息。性和messages_en.性)
- 确保永远关键在messages_en.属性的定义也在messages_{每一个其他区域}.性质(即使在准确的相同)。
如果我不做这个,我得到"???一些。钥匙???" 在Jsp。
请帮帮忙!这是令人费解。
-- LES
解决方案
添加以下来pom.xml (如果你使用的专家)
...
<properties>
<taglibs.version>1.1.2</taglibs.version>
</properties>
...
<!--
Resin ships with a crappy JSTL implementation that doesn't work with
fallback locales for resource bundles correctly; we therefore include
our own JSTL implementation in the WAR, and avoid this problem. This
can be removed if the target container is not resin.
-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${taglibs.version}</version>
<scope>compile</scope>
</dependency>
解决方案
我不这样做树脂,所以,不要针对我,但是这些症状使它听起来像是它的船只与一个不烤JSTL执行情况。试用实例来复盖它与一个更体面的一个在webapp的 /WEB-INF/lib
.如果Servlet2.5,得到 jstl-1.2.jar, 或者如果Servlet2.4,得到 jstl.jar 和standard.jar.
其他提示
只是一个想法,但你可以试试加入这一背景下参数:
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
<param-value>en</param-value>
</context-param>
这有可能是树脂是使用这样的东西为后备'地区。
不隶属于 StackOverflow