0

Controller、Model、Service、およびValidationクラスを備えたSpringmvcアプリケーションがあります。すべてが正常に動作します。現在持っているものを開発する際に、検証メッセージをmessages.propertiesファイルに保存しました。これは次のような構成クラスに登録しました。

@Bean
public MessageSource messageSource() {

    final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("[package name]/messages/messages");

    return messageSource;
}

バリデーターで、ユーザーが次のようなフィールドに回答しなかった場合に検証メッセージを追加します。

ValidationUtils.rejectIfEmptyOrWhitespace(errors, "age", "required", new Object[] {"Age"});

messages.propertiesファイルにこれがあります(上記の「age」はモデルオブジェクトの名前、「required」はmessages.propertiesファイルのメッセージを取得するために使用されるキーです)。

required = {0} is required.

わかりました。これもすべて正常に機能します。しかし、私がやりたいのは、メッセージをデータベースに外部化することです(基本的に、これらはすべてのアプリケーションが使用する企業メッセージです)。

私の質問は、Springにmessages.propertiesの代わりにデータベースを使用させるにはどうすればよいですか?または、messages.propertiesを使用して、メッセージ自体ではなくメッセージのID(データベースキー)のみを保存しますか?

私は何をすべきかについていくつかの考えを持っていますが、どちらかを行う方法がわかりません。Spring-formタグライブラリが実際のメッセージを取得する作業を実行することになると私は「思います」。おそらく私はどういうわけかその呼び出しを傍受することができますか?または、messages.propertiesファイルを定義するのではなく、何らかの方法でmessageSourceを別の名前に変更することもできます。

とにかく、誰かアイデアはありますか?

4

2 に答える 2

0

ResourceBundleMessageSource を使用する代わりに、DB に戻るカスタム MessageSource 実装を使用します。残念ながら、Spring 自体には、jira の問題で説明されているように、そのような実装はありません: https://jira.springsource.org/browse/SPR-364

しかし、MessageSource インターフェイスの実装は簡単です。jira の問題に添付されたサンプル実装を見ることもできます: https://jira.springsource.org/secure/attachment/10261/JdbcMessageSource.java

于 2012-10-25T23:39:57.530 に答える