Me deem uma luz por favor !!!
Pessoal, tem 4 dias que eu to apanhando igual vaca na horta pra Internacionalizacao no spring. Minha aplicacao consiste em o usuario selecionar a linguagem que ele deseja no seu portal ( pt_BR, en_US … etc ) e com isso fazer com que o spring coloque esse Locale na sessao. Acredito que esse seja um problema comum, mas pesquisei e ja tentei de tudo e nao entendo pq a porcaria do locale nao fica na sessao. Consegui fazer ele funcionar somente a nivel de request. Quando eu volto pra primeira página ele volta com o locale padrao… alguem sabe me dizer pq ??
aqui vao alguns dos trechos de código q estou utilizando:
Uso struts 2, spring 2.5 e maven 2.2.1
Struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.objectFactory" value="spring" />
	<constant name="struts.devMode" value="true" />
	
	
    <package name="locale" extends="struts-default">
      <action name="initPortal" method="init" class="localeAction">
            <result name="input">pages/mainPage.jsp</result>
            <result name="success">pages/mainPage.jsp</result>
        </action>
        
        <action name="changelocale-submit" method="changeLocale" class="localeAction">
            <result name="input">pages/secondPage.jsp</result>
            <result name="success">pages/secondPage.jsp</result>
        </action>
        
       
    </package>
</struts>
Disponibilizo uma lista na mainPage pro cara dar um submit passando um string locale ( trecho ).
mainPage.jsp:
<%@ taglib prefix="s" uri="/struts-tags"%>
...
<br><s:i18n name="messages"><s:text name="site.title" /></s:i18n>
Escolha o locale: 
...
<s:form action="changelocale-submit" >
	...
				<s:select list="locales" name="currentLocale" />
	...
				<s:submit></s:submit>
...
</s:form>
Trecho do meu applicationContext.xml
...
        <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basename" value="messages">
		</property>
	</bean>
	
	
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:jdbc.properties</value>
			</list>
		</property>
	</bean>
	
	
		<!-- Declare the Interceptor -->
	<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
		<property name="paramName" value="currentLocale" />
	</bean>
		
	<!-- Declare the Resolver -->
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver "/>
...
Action ( trecho )
...
public class LocaleAction extends ActionSupport implements Preparable, SessionAware{
	public String currentLocale;
	public Map locales = null;
	public Locale locale = null;
    
	public String init() throws Exception {
		System.out.println("This is the locale injected by spring: "+currentLocale);
		return Action.SUCCESS;
	}
	
	
	public String changeLocale(){
		
		System.out.println("received locale: "+currentLocale);
		locale = new Locale(currentLocale);
		return Action.SUCCESS;
	}
	public void prepare() throws Exception {
		 if (locales == null) {
	        	HashMap<String, String> localeMap = new HashMap<String, String>();
	        	localeMap.put("EN", "English - US");
	        	localeMap.put("BR", "Português - BR");
	        	localeMap.put("ES", "Espanõl - ES");
	            locales = localeMap;
	        }
		
	}
	getters and setters... 
}
Entao é simples. mainPage : submit -> secondPage ( ok ) Internacionalizado. Quando volto pra mainPage atraves do link na secondPage, a internacionalizacao se perde. Como coloco esse locale na sessao ???
secondPage:
<%@ taglib prefix="s" uri="/struts-tags"%>
<br><s:i18n name="messages"><s:text name="site.language" /></s:i18n>
<BR>
<a href="http://localhost:8080/portalAluno-portal/initPortal.action">Link pra mainPage</a>