2009-04-07 12 views
3

In einer Webanwendung, die mit Spring-MVC geschrieben wurde, möchte ich Benutzern erlauben, die aktuelle Sprache zu ändern, indem Sie auf einen Link klicken, dessen Text der Name der Sprache ist.Spring MVC Web App i18n

Ich habe bereits eine MessageSource eingerichtet und alle meine JSP-Seiten finden die Nachrichten mit dieser MessageSource. Derzeit ändert sich die Sprache abhängig vom Gebietsschema des Benutzer-Browsers.

Also, was ich jetzt tun möchte, ist es, das Gebietsschema manuell zu ändern.

Ich habe festgestellt, dass die Klasse SessionLocaleResolver helfen könnte, aber ich weiß nicht, wie ich es in meiner Anwendungskontextdatei einrichten soll (welcher Name ist myAppName-servlet.xml).

<bean id="localeResolver" 
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> 
</bean> 

Aber, in der Bohne sollte ich diese Stecker:

ich die Bohne definiert haben? Wie setze ich einen Cookie für das Gebietsschema in eine Benutzersitzung?

Antwort

6

Alle Informationen I in der Dokumentation erforderlich waren, vor mir, an:

http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-localeresolver

Kurz gesagt, angepasst ich die folgende xml myAppName-servlet.xml

<bean id="localeChangeInterceptor" 
     class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
    <property name="paramName" value="siteLanguage"/> 
</bean> 

<bean id="localeResolver" 
     class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> 

<bean id="urlMapping" 
     class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="interceptors"> 
     <list> 
      <ref bean="localeChangeInterceptor"/> 
     </list> 
    </property> 
    <property name="mappings"> 
     <value>/**/*.view=someController</value> 
    </property> 
</bean> 

Und jetzt genügt es, auf eine Seite mit dem folgenden Parameter zuzugreifen:

siteLanguage=locale 

, um das Gebietsschema für die gesamte Site zu ändern.

Zum Beispiel: http://localhost:8080/SBrowser/deliveries.html?siteLanguage=frenter code here

Verwandte Themen