jsf2加载在JAR中定义的资源包

时间:2013-08-29 07:46:16

标签: jsf resourcebundle

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

如何让它发挥作用?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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']}

同样,最好看一下这个主题:

Using Multiple Resource bundles in JSF

答案 2 :(得分:0)

当打包为jar时,faces-config.xml必须位于/classes/META-INF/目录下,并且不必在每个f:loadBundle facelet