如何使用JSF查看Jar中的message.properties?

时间:2011-08-24 15:35:03

标签: jsf richfaces facelets gatein

使用:JSF 1.2,Facelets 1.1.15,GateIn 3.1 GA,Richfaces 3.3.3

我在一个JAR中有一些常见的.xhtml和支持bean,我们的portlet可以看到它们。我通过覆盖ResourceResolver来完成此操作,如其他帖子所述:

portlet可以加载XHTML并使用支持bean。

这是我的问题:我无法让xhtml替换messages_en.properties中定义的消息。我已经尝试将属性文件移到JAR之外并直接放在/lib文件夹中。我也尝试在名称前添加/以尝试让解析器找到它。我也把它放在components文件夹中。

常见的jar信息是:我有一个位于my-portlet-common-resources.jar的{​​{1}}。 jar的结构如下:

  • COM /门户/普通/ CustomResourceResolver.class
  • com / portlet / common / FilterCreateBean.class - 常用弹出窗口的支持bean
  • messages_en.properties
  • 面-config.xml中
  • META-INF /组件/ commonPopups.xhtml
  • META-INF / faces-config.xml - 声明FilterBean
  • META-INF / MANIFEST.MF

server/my-portal/lib内容:

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2"> <application> <locale-config> <default-locale>en</default-locale> </locale-config> <message-bundle>/messages_en.properties</message-bundle> </application> <managed-bean> <managed-bean-name>FilterCreateBean</managed-bean-name> <managed-bean-class>com.portlet.common.FilterCreateBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config> (部分剪辑)中包含消息:

commonPopups.xhtml

1 个答案:

答案 0 :(得分:3)

这应该有效。也许您已经在主Web应用程序的类路径根目录中有一个messages*.properties文件。这个在类加载中具有优先权。你需要把它放在一个更具体的包中。将JAR的一个放在例如com/portlet/common文件夹中,以便它成为com.portlet.common包的成员。这样就可以通过以下方式获得:

<a4j:loadBundle basename="com.portlet.common.messages" var="msgs"/>

对具体问题

无关<message-bundle>中的faces-config.xml条目具有完全不同的用途。它应该覆盖由JSF默认验证器/转换器返回的JSF默认验证/转换消息。它无意提供本地化内容。在那里,您使用<resource-bundle>条目或<xxx:loadBundle>标记。我会从faces-config.xml删除该条目。