0

我正在将我们的 JSF messages.properties 移到战争之外,因此 QA 和操作人员可以修改消息而不会产生新的战争。

我创建了一个 JBoss 7 模块并将 messages.properties 文件放在 $JBOSS_HOME/modules/com/acme/revenue/main/messages.properties 中。我更新了 jboss-deployment-structure.xml 以包含

<module name="com.acme.revenue"/>

我在 $JBOSS_HOME/modules/com/acme/revenue/main 中放置了一个 module.xml 文件。它包含:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.acme.revenue">
    <resources>
        <resource-root path="."/>
    </resources>
</module>

这一切都有效。在我可以调用的java代码中:

ResourceBundle bundle = ResourceBundle.getBundle("messages", Locale.getDefault());
bundle.getString("TargetingKey") 

它返回翻译后的值“收入目标”。但是在 JSF .xhtml 文件中,代码调用 #{messages.TargetingKey} 并且它不起作用,因为 JSF 似乎没有找到资源包。

在更改之前 faces-config.xml 包含以下内容并且运行良好:

<resource-bundle>
    <base-name>com.acme.revenue.messages</base-name>
    <var>messages</var>
</resource-bundle>

如何修复此 JSF 声明以查找捆绑包并显示消息?

谢谢你。

4

1 回答 1

0

当您创建模块时,您赋予name=com.acme.revenuethis 的行为类似于在资源包声明中的so的静态导入,您必须在基本名称中仅放入属性文件的文件名faces-config.xml

<resource-bundle>
    <base-name>messages</base-name>
    <var>messages</var>
</resource-bundle>
于 2014-11-19T11:11:13.087 回答