Frage

In Anbetracht der folgenden Eigenschaften Resource Dateien:

  1. messages.properties
  2. messages_en.properties
  3. messages_es.properties
  4. messages_ {einige locale} .properties

Hinweis: messages.properties enthält alle Meldungen für das Standardgebietsschema. messages_en.properties ist wirklich leer - es ist da nur für Richtigkeit. messages_en.properties wird messages.properties fallen zurück!

Und die folgenden Konfigurationsparameter erstellt in web.xml gegeben:

<context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>messages</param-value>
</context-param>

<context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.fallbackLocale</param-name>
    <param-value>en</param-value>
</context-param>

Das würde ich erwarten, wenn das gewählte Gebietsschema ‚es‘, und eine Ressource in ‚es‘ nicht übersetzt, dann wäre es, zu ‚de‘ zurückgreifen und schließlich zu ‚messages.properties‘ (seit messages_en.properties leer ist).

Dies ist, wie die Dinge in Jetty arbeiten. Ich habe auch diese auf WebSphere getestet.

Harz ist das Problem

Das Problem ist, wenn ich zu Harz erhalten (3.0.23). Fallback-Lösung funktioniert nicht! Um eine Nachrichten-Anzeige zu erhalten, muss ich folgendes tun:

  1. Rename messages.properties zu messages_en.properties (im Wesentlichen, Swap die Inhalte von messages.properties und messages_en.properties)
  2. Achten Sie darauf, immer Schlüssel in messages_en.properties auch in messages_ {jede andere locale} .properties definiert ist (auch wenn genau das gleiche).

Wenn ich das nicht tun, erhalte ich „??? some.key ???“ in dem JSPs.

Bitte Hilfe! Dies ist verwirrend.

- LES

SOLUTION

Fügen Sie folgende zu pom.xml (wenn Sie mit Maven)

...
<properties>
    <taglibs.version>1.1.2</taglibs.version>
</properties>
...

    <!--
        Resin ships with a crappy JSTL implementation that doesn't work with
        fallback locales for resource bundles correctly; we therefore include
        our own JSTL implementation in the WAR, and avoid this problem. This
        can be removed if the target container is not resin.
    -->
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>${taglibs.version}</version>
        <scope>compile</scope>
    </dependency>
War es hilfreich?

Lösung

ich nicht Resin tun, so lass mich nicht auf sie stecken, aber die Symptome machen es klingen wie, dass es Schiffe mit einem schlecht gebacken JSTL Umsetzung. Versuchen Sie zum Beispiel mit einem anständigen in der Webapp der /WEB-INF/lib außer Kraft zu setzen. Wenn Servlet 2.5, jstl-1.2.jar oder wenn Servlet 2.4, get jstl.jar und standard.jar .

Andere Tipps

Nur eine Idee, aber man konnte diesen Kontext-param versuchen Sie auch:

<context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
    <param-value>en</param-value>
</context-param>

Es ist möglich, dass Harz wird mit so etwas wie das als ‚Rückfall‘ locale.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top