2012-04-17 27 views
0

私はSpring MVCでの新しい作業ですが、多言語をアプリケーションに追加する際にいくつか問題があります。春の多言語

xml構成を使用しません。私はデ・アプリケーションをテストするとき、私はいつも、私はデフォルト言語(スペイン語)を参照してください@Configurationクラス

import org.springframework.context.MessageSource; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.HandlerInterceptor; 
import org.springframework.web.servlet.HandlerMapping; 
import org.springframework.web.servlet.LocaleResolver; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping; 
import org.springframework.web.servlet.i18n.CookieLocaleResolver; 
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; 
import org.springframework.web.servlet.i18n.SessionLocaleResolver; 
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping; 

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages="com.springexamples.basic.controller") 
public class BasicServletConfig extends BaseConfig { 

    @Bean 
    ViewResolver viewResolver() { 
     return getViewResolver("views/basic/", ".jsp"); 
    } 

    @Bean 
    MessageSource messageSource() { 
     return getMessageSource("/messages/messages"); 
} 

@Bean 
LocaleChangeInterceptor localeChangeInterceptor() { 
    LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor(); 
    interceptor.setParamName("lang"); 
    return interceptor; 
} 

@Bean 
LocaleResolver localeResolver() { 
    return new SessionLocaleResolver(); 
} 

@Bean 
HandlerMapping handlerMapping() { 
    SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping(); 
    mapping.setInterceptors(new HandlerInterceptor[] { localeChangeInterceptor() }); 
    return mapping; 
} 
} 

を持っています。私はパラメータ 'lang = en'または 'lang = EN'でリクエストを送信しますが、それでもデフォルト言語で表示されます。

¿誰でも解決策を知っていますか?

おかげで、

+0

BaseConfig'は、標準的な春のクラスではありません 'として、あなたは' BaseConfig.getMessageSource() 'のコードを表示することができます。 – beny23

+0

'コード' \t保護ViewResolver getViewResolver(文字列の接頭辞、接尾辞文字列){ \t \t InternalResourceViewResolverレゾルバ=新しいInternalResourceViewResolver()。 \t \t resolver.setPrefix(接頭辞); \t \t resolver.setSuffix(接尾辞); \t \tリターンリゾルバ; \t} \t \t MessageSource getMessageSource(文字列messagefileを){ \t \t ReloadableResourceBundleMessageSource messageSource =新しいReloadableResourceBundleMessageSource()保護されました。 \t \t messageSource.setBasename(messageFile); \t \t messageSource.setCacheSeconds(15); \t \t返信messageSource; \t} } – Krusader

+0

テキストのように。 – Krusader

答えて

0

私はHandlerMapping@EnableWebMvcで再生されます。このように宣言かどうかはわかりません。 @EnableWebMvcでインターセプタを設定するには、より多くの慣用的な方法は、WebMvcConfigurerを使用することです:

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages="com.springexamples.basic.controller") 
public class BasicServletConfig extends BaseConfig implements WebMvcConfigurer { 
    ... 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(localeChangeInterceptor()); 
    } 
    ... 
} 
+0

こんにちは、 まずは、すばやくお返事いただきありがとうございます。私は 'WebMvcConfigurer'を実装しており、あなたのように 'addInterceptors'を設定しましたが、それでも動作しません。 – Krusader

+0

こんにちはaxtavt、私も__WebMvcConfigure__インターフェイスを使用しようとしました。しかし私のためにもそれは動作していません:( – swapy