2

我正在创建一个模块化 JSF 2.0 应用程序,每个模块都有自己的 faces-config 和 facelet 页面。这些模块被打包到 JAR 中并在主 JSF2 应用程序中使用。一切正常,但在每个 faces-config 文件中定义的资源包在运行时未解析。未解决意味着相应的文本未显示在页面中。我将消息称为<h:outputText value="#{msg['message1']}" />

我如何使它工作?

4

3 回答 3

5

经过一些研究,JAR 文件中 faces-config 文件中定义的资源包似乎在运行时没有解析。唯一的解决方案是<f:loadBundle var="msg" basename="messages"/>在 facelet 页面中显式使用。然后它将解析 JAR 文件中的 messages.properties。

于 2013-09-13T09:58:57.510 回答
2

这是一个古老的话题,但也许可以帮助某人。

另一种可能的解决方案是在 faces-config.xml 中声明两个不同的包。像这样的东西:

<application>
    <resource-bundle>
        <base-name>msgsprj</base-name>
        <var>msgsPrj</var>
    </resource-bundle>

    <resource-bundle>
        <base-name>msgsfmk</base-name>
        <var>msgsFmk</var>
    </resource-bundle>
</application>

所以在你的 XHTML 中你可以这样使用它们:

#{msgsFmk['generic.msg.remove']}

看看这个主题也是个好主意:

在 JSF 中使用多个资源包

于 2018-11-02T18:38:06.850 回答
0

打包为 时jarfaces-config.xml必须在/classes/META-INF/dir 中,不必f:loadBundle在每个中添加facelet

于 2019-09-02T12:20:40.913 回答