我正在创建一个模块化 JSF 2.0 应用程序,每个模块都有自己的 faces-config 和 facelet 页面。这些模块被打包到 JAR 中并在主 JSF2 应用程序中使用。一切正常,但在每个 faces-config 文件中定义的资源包在运行时未解析。未解决意味着相应的文本未显示在页面中。我将消息称为<h:outputText value="#{msg['message1']}" />
我如何使它工作?
我正在创建一个模块化 JSF 2.0 应用程序,每个模块都有自己的 faces-config 和 facelet 页面。这些模块被打包到 JAR 中并在主 JSF2 应用程序中使用。一切正常,但在每个 faces-config 文件中定义的资源包在运行时未解析。未解决意味着相应的文本未显示在页面中。我将消息称为<h:outputText value="#{msg['message1']}" />
我如何使它工作?
经过一些研究,JAR 文件中 faces-config 文件中定义的资源包似乎在运行时没有解析。唯一的解决方案是<f:loadBundle var="msg" basename="messages"/>
在 facelet 页面中显式使用。然后它将解析 JAR 文件中的 messages.properties。
这是一个古老的话题,但也许可以帮助某人。
另一种可能的解决方案是在 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']}
看看这个主题也是个好主意:
打包为 时jar
,faces-config.xml
必须在/classes/META-INF/
dir 中,不必f:loadBundle
在每个中添加facelet