Struts 1.3: Wie ein Standard-Gebietsschema in einer web-app?
Habe ich zwei oder drei i18n-Dateien in meiner struts-Anwendung. Ich bin in der Lage, wechseln zwischen diesen, durch die Einstellung der Global.LOCALE_KEY
variable in der session.
Gibt es eine Möglichkeit zum festlegen eines Standardgebietsschemas für die Anwendung (wahrscheinlich in der struts-config.xml Datei, glaube ich) ? Ist die session der einzige Ort, an dem das Gebietsschema festgelegt ?
Sicher, ich könnte den Aufruf abzufangen, um die erste Seite, und legen Sie die variable in der session, aber das ist umständlicher.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem web.xml definieren Sie ein context-param:
Dann vorne in Ihre webapp:
obwohl Sie haben Sie zu ändern, die Eigenschaften der Linie zu kleben Sie es auf der Sitzung statt. Sie müssen möglicherweise zu hacken up eine version von ActionComponentServlet, die nicht pre-Initialisierung wie diese.
Wahrscheinlich gibt es ein besserer Weg, dies zu tun, das ist einfach nur code, den ich geerbt.
Wenn Sie wollen, um das setup eine session, wie es erstellt wird, könnten Sie mit einem HttpSessionListener. Einrichten eines Standard-Gebietsschema für jede neue Sitzung würde wie folgt Aussehen:
Dann fügen Sie dieses element, um Ihre web.xml Datei:
Oder man könnte hinzufügen, es "programmatisch", die von der Methode ServletContext.addListener
Hm, ich endlich dies Problem gelöst man durch das schreiben von Java-code statt der Verwendung struts-config.xml.
Erstellte ich ein context-listener, um den Wert eines statischen Feldes in der Struts-Klasse.
Siehe diese Frage: Gibt es eine Möglichkeit zum ausführen einer Methode/Klasse nur auf tomcat startup?
Wenn Sie eine Ressourcen-Datei ausgewählt werden, als Standard einfach weglassen, der Sprach-code in der Datei-name:
EDIT:
Es ist ein Fehler in Struts 1.x über Standard-Nachrichten-handling-wenn Sie definieren Ihre Nachrichten im Standard-Modus (der wird ausgewählt, wenn Sie weglassen die
mode
Eigenschaft):und das Standard-Gebietsschema nicht die gleiche Sprache wie die Eigenschaften ohne postfix:
Texts.properties
.Lassen Sie uns sagen, dass unsere
Texts.properties
Datei enthalten englischen text. Zusätzlich gibt es eine Deutsche übersetzung:Texts_de.properties
. Unser Standard-system-Gebietsschema ist Französisch, weil wir laufen auf einem französischen server (und wir nicht Sie explizit).Wenn Ihre erste Anfrage nach dem server-Start-Anforderungen der deutschen übersetzung einer Seite alle nachfolgenden Anforderungen für dieselbe Seite wird serviert in Deutsch, wenn es keine explizite properties-Datei für die gewünschte Sprache code.
Wenn der erste Antrag fordert eine englische Seite jedes nachfolgende Anfragen von der gleichen Seite wird serviert in Englisch, wenn es keine explizite properties-Datei für den gewünschten Sprachcode (was wir wollen).
Die Lösung für dieses problem ist das setzen der mode-Eigenschaft für jede Nachricht, die Ressourcen-Erklärung: