Frage

Ich bin mit Spring 2.5 mit JSF 1.2 , auf Tomcat 6.0.13 .

In einem Teil des Codes, ich versuche zu laden Resource durch folgenden Ansatz:

ResourceBundle.getBundle(context.getApplication().getMessageBundle(), Locale.EN);

Das Problem ist, dass getMessageBundle () Methode gibt null . Diese verwendet, um die Arbeit mit JSF 1.1 . Hat jemand hat Ahnung, was das Problem sein könnte?

Für jetzt hard Bündel Namen Ich werde, aber ich würde es vorziehen, wenn alle meine Konfigurationsdaten innerhalb platziert werden Gesichter-config .

Ressourcenbündel wird eingestellt, wie folgt:

    <application>
        <locale-config>
            <default-locale>en</default-locale>
        </locale-config>
        <resource-bundle>
            <base-name>org.mysite.MessageBundle</base-name>
            <var>msgs</var>
        </resource-bundle>
    </application>
War es hilfreich?

Lösung

Der getMessageBundle() gibt den Wert <message-bundle> Eintrag in faces-config.xml, nicht der <resource-bundle> Eintrag.

Sein Wert ist eigentlich nicht lieferbar durch den JSF 1.2 API. Sie haben es selbst angeben.

ResourceBundle bundle = context.getApplication().getResourceBundle(context, "org.mysite.MessageBundle");

Die <message-bundle> ist für die Validierung / Konversions-Nachrichten. Wahrscheinlich haben Sie wirklich verwendet, um diese in JSF 1.1.

Andere Tipps

IgorB,

Unter Umständen können Sie Ressource Injektion verwenden JSF Ihre Managed Bean haben bieten mit dem richtigen Resource. Dies würde die Notwendigkeit eines festen Code allem in Ihrer Java-Quelle entfernen und hält die Verbindung gut zentralisiert.

Starten Sie durch eine verwaltete Eigenschaft auf Ihrem Backing Bean definieren. In der JSF-Konfiguration, die Wert der verwalteten Eigenschaft auf einen EL-Ausdruck, dass Verweise Ihres Ressourcenbündel.

Ich habe getan, so etwas wie die folgenden mit Tomcat 6. Der einzige Nachteil ist, dass Sie nicht auf diesen Wert zugreifen können von Ihrem Backing Bean Konstruktor, da JSF wird noch nicht initialisiert haben. Verwenden @PostConstruct auf einer Initialisierungsmethode, wenn der Wert Anfang des Lebenszyklus in dem Bean benötigt wird.

<managed-bean>
  ...
  <managed-property>
    <property-name>messages</property-name>
    <property-class>java.util.ResourceBundle</property-class>
    <value>#{msg}</value>
  </managed-property>
  ...
</managed-bean>

<application>
  ...
  <resource-bundle>
    <base-name>application_messages</base-name>
    <var>msg</var>
  </resource-bundle>
  ...
</application>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top