1

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

.xhtmlポートレットが参照できる JAR に共通のバッキング Bean がいくつかあります。他の投稿で説明されているように、ResourceResolver をオーバーライドしてこれを行いました。

ポートレットは XHTML をロードし、バッキング Bean を使用できます。

ここに私の問題があります: で定義されたメッセージを置き換える xhtml を取得できませんmessages_en.properties/libプロパティファイルをJARの外に移動し、フォルダーに直接配置しようとしました。また、名前の前に a を付けて/、リゾルバーに見つけさせようとしました。コンポーネントフォルダにも入れました。

一般的な jar 情報は次のとおりmy-portlet-common-resources.jarですserver/my-portal/lib。jar は次のように構成されています。

  • com/portlet/common/CustomResourceResolver.class
  • com/portlet/common/FilterCreateBean.class - 共通ポップアップのバッキング Bean
  • messages_en.properties
  • 顔-config.xml
  • META-INF/components/commonPopups.xhtml
  • META-INF/faces-config.xml - FilterBean を宣言します
  • META-INF/Manifest.mf

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(一部省略):

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jstl/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">

    <a4j:loadBundle basename="messages" var="msgs"/>

    <rich:panel style="border-style:none;" id="addNewChainPanel">
    <rich:modalPanel id="modalNewChainPanel" autosized="true">
        <f:facet name="header"><h:outputText value="#{msgs['filterset.modal.new.title']}" /></f:facet>

</ui:composition>
4

1 に答える 1

3

これは機能するはずです。おそらくmessages*.properties、メインのWebアプリのクラスパスルートにすでにファイルがあります。これは、クラスローディングで優先されます。より具体的なパッケージに入れる必要があります。JARの1つをたとえば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ます。

于 2011-08-24T15:55:12.743 に答える