2017-08-04 15 views
0

私は現在、Springブート(Spring Securityを含む)とthymeleafを使用してWeb-Appで作業しています。現時点では、英語とドイツ語の国際化サポートを最初に統合しようとしています。Springブート国際化?lang = enは効果がありません

私はthisチュートリアルに従ってきており、その事例を得ようとしました。 私がLocalhost:8443/internationalに行き、URLが正しく構築される言語の1つを選択すると.../international?lang = en。 Thymeleafは、デフォルトとしてマークされた.proppertiesファイルのフィールドも読み込みます。しかし、私が何をしても言語を実際に切り替えることはできません。

コード:私はそれがデフォルトmessages.proppertiesを取っていると仮定し、このよう

@Configuration 
@EnableWebMvc 
@EnableAutoConfiguration 
public class WebConfig extends WebMvcConfigurerAdapter { 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); 

} 

@Override 
public void addInterceptors(InterceptorRegistry registry) { 
    registry.addInterceptor(localeChangeInterceptor()); 
    registry.addInterceptor(new LogInterceptor()).addPathPatterns("/**"); 

} 

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

@Bean 
public LocaleResolver localeResolver() { 
    SessionLocaleResolver slr = new SessionLocaleResolver(); 
    slr.setDefaultLocale(Locale.US); 
    return slr; 
} 



} 

。私はmainメソッドがある私の

public class Application extends SpringBootServletInitializer 

クラスにLocaleResolver豆を入れた場合は、それがデフォルトロケールとして設定されているものは何でも言語かかります。

ここから今私は自分の.proppertiesファイルが正常であり、読み込めますが、LocaleChangeInterceptorを使って何かが正しく動作しないと結論づけています。私はデバッグ・モードに入りましたが、WebConfigクラスのブレークポイントはまったくトリガーしませんでした。

私の前提の1つは、Springのセキュリティが何かを混乱させ、?lang要求を解決できないことです。 (ログインとログアウトの両方を試みた)。

誰かが問題を解決する方法についていくつかのアイデアを持っていれば本当にうれしいでしょう。

マイApplicationクラス:

@SpringBootApplication 
@EnableMongoRepositories(basePackageClasses = UserRepository.class) 
@ComponentScan(basePackages = { "my.company.controller", "my.company.Services", "java.lang.String","my.company.Services.Security" }) 
@EnableConfigurationProperties(my.company.Services.Storage.StorageProperties.class) 
public class Application extends SpringBootServletInitializer { 

@Autowired 
private UserRepository repository; 

@Autowired 
private SecUserDetailsService userDetailService; 


public static void main(String[] args) throws Exception { 
    SpringApplication.run(Application.class, args); 
} 

@Bean 
CommandLineRunner init(StorageService storageService) { 
    return (args) -> { 

     repository.deleteAll(); 

     userDetailService.addUser("bob", "ross", "admin"); 
     userDetailService.addUser("1", "1", "superuser"); 
     userDetailService.addUser("2", "2", "admin"); 

     System.out.println("All users currently in DB:"); 
     System.out.println("-------------------------------"); 
     for (User user1 : repository.findAll()) { 
      System.out.println(user1); 
     } 
     System.out.println(); 

     // storageService.deleteAll(); 

     try { 
      storageService.init(); 
     } catch (StorageException e) { 
      System.out.println("Ordner schon vorhanden"); 
     } 
    }; 

//If i add this here french gets picked as default language, changing does still not work 
@Bean 
    public LocaleResolver localeResolver() { 
     SessionLocaleResolver slr = new SessionLocaleResolver(); 
     slr.setDefaultLocale(Locale.FRENCH); 
     return slr; 
    } 

} 
+0

本当に '@ EnableWebMvc'と' @ EnableAutoConfiguration'を使用する必要がありますか?私が間違っていない場合、あなたの 'Application'クラスにある' @ SpringBootApplication'の中にすでに含まれています。 –

+0

これは本当に本当です、それを指摘してくれてありがとう!それを削除しても悲しいことに私の問題は解決されません。どのようにそれを行うか考えていますか? –

+0

'Application'クラス全体を表示できますか?また、あなたのアプリケーションのパッケージ構造は何ですか(パッケージに 'Application'を入れ、' WebConfig'をどこに置くか)? –

答えて

1

@ComponentScan注釈を削除してください。 @SpringBootApplicationはコンポーネントを自動的にスキャンします。あなたのWebConfigクラスがロードされていないと思います。

+0

'@ ComponentScan'がなければ、以前はいくつかの豆を見つけることに問題がありました。私は、 'Application'クラスと' WebConfig'クラスの両方があるパッケージを追加しました。私は自分のパッケージをスキャンすると思った。それを指摘してくれてありがとう! upvoteしますが、まだ悲しいことにはできません。 –

+0

それはまさに私が思ったことです。お役に立てて嬉しいです。 – JaySon

関連する問題