So ermitteln Sie das Gebietsschema eines Besuchers in JSP mithilfe des SessionLocaleResolver von Spring 3

StackOverflow https://stackoverflow.com/questions/7368863

Frage

Ich muss das Gebietsschema eines Besuchers auf meinen JSP-Seiten abrufen, damit ich ein Dropdown-Menü mit einer Liste von Sprachen ordnungsgemäß anzeigen und die ausgewählte Sprache entsprechend ihrem aktuellen Gebietsschema auswählen kann.Normalerweise mache ich so etwas wie ${pageContext.request.locale}.

Das Problem, ich denke , ist, dass ich nur das Gebietsschema gemäß den Anforderungsheadern des Benutzers (was der Browser sendet) erhalte.Möglicherweise hat der Benutzer jedoch seine Sprache / sein Gebietsschema geändert, sodass ich den Spring-Mechanismus verwenden muss, der auch die Sitzung betrachtet:

RequestContextUtils.getLocale(request).toString();

Aber dann ist es nicht so einfach, auf eine JSP-Seite zuzugreifen und JSP-Code damit arbeiten zu lassen.

Oder gibt es einen anderen einfacheren Mechanismus, um einem Benutzer ein Dropdown-Menü mit Sprachen anzuzeigen?Speichert Spring das aktuelle Gebietsschema in einem Objekt, auf das über JSP leicht zugegriffen werden kann?

War es hilfreich?

Lösung

Wenn Sie den SessionLocaleResolver verwenden, wird das aktuelle Gebietsschema in der Sitzung unter Verwendung eines in der SessionLocaleResolver-Klasse angegebenen Attributnamens gespeichert.Der Verweis auf den SessionLocaleResolver wird in der Anforderung unter Verwendung eines anderen Attributnamens gespeichert (org.springframework.web.servlet.DispatcherServlet # LOCALE_RESOLVER_BEAN_NAME).

Ich sehe keine einfache Möglichkeit, das Gebietsschema direkt auf der JSP-Seite abzurufen, ohne Java-Code zu verwenden.

Ich würde das aktuelle Gebietsschema abrufen und die Liste der auswählbaren Sprachen im Controller erstellen und diese dem Modell hinzufügen.

Dies macht den Code testbar und verschiebt Java-Code vom JSP in den Controller.

Andere Tipps

Für uns

${pageContext.response.locale}

hat es geschafft.Diese Eigenschaft folgt dem, was vom Gebietsschema-Resolver von Spring eingerichtet wurde.

Einzeilige Lösung ..

RequestContextUtils.getLocale(request)

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