L'annotation Spring MVC LocaleChangeInterceptor basée ne fonctionne pas

import java.util.Locale;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;

@Configuration
public class Config {
    @Bean
    public LocaleResolver localeResolver() {
        final CookieLocaleResolver ret = new CookieLocaleResolver();
        ret.setDefaultLocale(new Locale("en_US"));
        return ret;
    }

    @Bean
    public MessageSource messageSource() {
        final ReloadableResourceBundleMessageSource ret = new ReloadableResourceBundleMessageSource();
        ret.setBasename("classpath:lang");
        ret.setDefaultEncoding("UTF-8");
        return ret;
    }

    @Bean
    public HandlerMapping handlerMapping() {
        final LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("language");

        final DefaultAnnotationHandlerMapping ret = new DefaultAnnotationHandlerMapping();
        ret.setInterceptors(new Object[] { interceptor });
        return ret;
    }
}

Ci-dessus est mon annotation de configuration. J'ai essentiellement traduit cette tutoriel XML.

Étrangement, il ne fonctionne pas quand je vais à ...?language=fr.

Cependant, le code suivant fonctionne (en app-servlet.xml) (avis ici, c'est à l'aide de locale):

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="locale" />
    </bean>
</mvc:interceptors>

Une autre chose importante à noter est que lorsque je mets des points d'arrêt sur les méthodes ci-dessus, tous les trois, à chaque point d'arrêt n'pause, ce qui implique que "quelqu'un" est la lecture des valeurs.

Alors, pourquoi ne pas mon annotation en fonction de l'intercepteur ne fonctionne pas?

source d'informationauteur Poni | 2012-08-01