使用: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的结构如下:
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
答案 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
删除该条目。