ロットを処理するためにKotlinでSpringブートを使用する際に問題があります。パラメータdoesnの、パラメータとしてURLにロケールを置くときパラメータで春ブートコントローラのロケールが変更されない
@Autowired
lateinit var messageSource: MessageSource
:私のコントローラ内のMessageSourceのautowiredインスタンスを作成した後
spring.messages.basename=messages/messages
spring.messages.cache-seconds=-1
spring.messages.encoding=UTF-8
:私は私のapplication.propertiesファイルでこれらの設定を作成しました私がLocaleContextHolder.getLocale()
に電話をしたときに起きたと思われるので、常にen_USです。しかし、私はコントローラの機能のパラメータとして@RequestParam(value="locale") locale: Locale
を使用して手動でそれを取り上げて、そこからコントローラの機能で使用することはできますが、他の機能では使用できません。私は春の起動LocaleContextHolderが、セッション全体のリクエストURLに基づいて現在のロケールを自動的に保持していると考えていました。
メインクラスでLocaleChangeInterceptor BeanとMessageSourceとLocaleResolverのBeanを使用して説明した古い記事を読んでいますが、別の記事によるとSpring Bootはそれを必要としないと述べています。私はとにかくそれを差してみました。これらは私が使用する関数です:
@Bean
open fun localeResolver(): LocaleResolver {
val slr = SessionLocaleResolver()
slr.setDefaultLocale(Locale.US)
return slr
}
@Bean
open fun localeChangeInterceptor(): LocaleChangeInterceptor {
val localeChangeInterceptor = LocaleChangeInterceptor()
localeChangeInterceptor.paramName = "locale"
return localeChangeInterceptor
}
@Bean
open fun messageSource(): ResourceBundleMessageSource {
val source = ResourceBundleMessageSource()
source.setBasenames("messages/messages")
source.setDefaultEncoding("UTF-8")
return source
}
手動でロケールをキャプチャし、それコントローラによって呼び出されるすべての関数内のパラメータ作るよりも、次の他のを試して何上の任意の提案?ありがとう!