web-dev-qa-db-ja.com

ThymeleafおよびSpring Bootでメッセージを表示する方法は?

テンプレートエンジンとしてThymeleafを使用するSpring Boot Webアプリケーションを作成しました。サブフォルダー内のメッセージを検索するようにMessageSourceを構成しました。

_@Bean
public MessageSource messageSource() {
    final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();

    messageSource.setBasename("i18n/messages");
    messageSource.setFallbackToSystemLocale(false);
    messageSource.setCacheSeconds(0);

    return messageSource;
}
_

このフォルダーに、コンテンツ_messages_de.properties_を持つファイル_ticket.type.BUG=Fehler_を作成しました。私のテンプレートでは、次のようなテキストを表示しようとします。

_<p th:text="#{ticket.type.BUG}">BUG</p>
_

しかし、ページがレンダリングされると、次の結果が得られます。

_<p>??ticket.type.BUG_de_DE??</p>
_

私は何が欠けていますか?追加のBeanを構成する必要がありますか?

P.S.:

「サーバー側」では、MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)を使用してメッセージを取得できます。

18
stevecross

I18nメッセージングを解決する方法は、MessagesSource Beanをあなたのように定義することでした。さらに、WebMvcConfigurerAdaptergetValidator()メソッドをオーバーライドする必要がありました。

@Override
public Validator getValidator() {
    LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
    validator.setValidationMessageSource( messageSource() );
    return validator;
}

この後、それは私のために働いた。

3
Michael RHöse

フォールバックを許可するファイルmessages.properties_deなし)がありますか?動作しますか?ブラウザーはロケールDE_deに設定されていますか?

1
fkurth

メッセージソースはクラスパスに相対的です:

messageSource.setBasename("  classpath:i18n/messages");

ここに、thymeleafとspringについて参照したチュートリアルがあります= http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html

0
Paul John