私は現在、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;
}
}
本当に '@ EnableWebMvc'と' @ EnableAutoConfiguration'を使用する必要がありますか?私が間違っていない場合、あなたの 'Application'クラスにある' @ SpringBootApplication'の中にすでに含まれています。 –
これは本当に本当です、それを指摘してくれてありがとう!それを削除しても悲しいことに私の問題は解決されません。どのようにそれを行うか考えていますか? –
'Application'クラス全体を表示できますか?また、あなたのアプリケーションのパッケージ構造は何ですか(パッケージに 'Application'を入れ、' WebConfig'をどこに置くか)? –