我正在创建一个模块化的JSF 2.0应用程序,每个模块都有自己的faces-config和facelet页面。这些模块打包到JAR中并在主JSF2应用程序中使用。一切正常,但每个faces-config文件中定义的资源包在运行时都没有解析。未解析表示相应的文本未显示在页面中。我将消息称为<h:outputText value="#{msg['message1']}" />
如何让它发挥作用?
答案 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']}
同样,最好看一下这个主题:
答案 2 :(得分:0)
当打包为jar
时,faces-config.xml
必须位于/classes/META-INF/
目录下,并且不必在每个f:loadBundle