java - Hibernate ValidatorでSpringリソースバンドルを使用する

原文 java spring validation hibernate-validator tomcat8

初めての投稿はこちら。

私はJSON WebサービスAPIを開発していますが、カスタム検証メッセージを使用してもうまくいきません。

これが私のセットアップです(私の問題に関係するコンポーネントに焦点を当てています。MyBatis、jUnit ...も使用しています)。


Tomcat 8.0.14
春4.1.1
ジャージー2.13
ジャージースプリング3 2.13
ジャージービーン検証
Hibernate Validator 5.0.0.Final


Beanプロパティの検証とクラスレベルの検証は正常に機能します。
今、私はカスタムエラー検証メッセージを設定しようとしています。

JSR-303 /META-INF/ValidationMessages.propertiesを使用したくないのですが、Springマネージドバンドルを使用したくありません。

私のapplicationContext.xmlで、私は定義しました:

<bean name="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="validationMessageSource">
        <ref bean="messageSource" />
    </property>
</bean>

<bean name="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="configuration/messages/validation" />
</bean>


/WEB-INF/classes/configuration/messages/validation_fr_FR.propertiesにもいくつかのプロパティを作成します。

model.error=Modèle invalide


これで、Beanを検証しようとすると、ログに次のように記録されます。

15:47:14,300 DEBUG http-nio-8080-exec-2 resourceloading.PlatformResourceBundleLocator:72 - ValidationMessages not found.
15:47:45,707 DEBUG http-nio-8080-exec-2 resourceloading.PlatformResourceBundleLocator:69 - org.hibernate.validator.ValidationMessages found.


ここに私のバンドルについての言及はありません...

私のJSON応答では、次のようになります。

{model.error} (path = EventServiceAPIImpl.createOrUpdateEvent.arg0, invalidValue = [email protected])


{model.error}はカスタムメッセージに置き換えられません。

ReloadableResourceBundleMessageSourceがHibernate Validatorのデフォルト設定によってオーバーライドされていると思います。しかし、なぜ ?

私は解決策を見つけるためにグーグルとスタックオーバーフローをオーバーロードしました、私を助けることができるものは何も見つかりませんでした

誰かが同じ問題に遭遇しますか?

ありがとうございました !
答え
私は遅いと思いますが、それは誰かを助けるかもしれません。

validation_fr_FR.propertiesの名前をValidationMessages.propertiesファイルに変更し、「src \ main \ resources」フォルダーに配置します。

したがって、最終的なパスは次のようになります。


src \ main \ resources \ ValidationMessages.properties


サーバーを再起動し、検証をレンダリングしてみます。

LocalValidatorFactoryBeanとResourceBundleMessageSourceはもう必要ありません

Hibernateは基本的にデフォルトのディレクトリで同じファイル名を探し、デフォルトのValidationMessages.propertiesを上書きします
関連記事

java - GXT円グラフで色を選択する

java - appengine内でのsqliteファイルの作成

java - Spring Candidate Bean Type Strategyは、修飾子をチェックする前に、指定されたタイプのすべてのBeanをインスタンス化しないでください

java - Java同期の待機および通知メソッド

java - Javaを使用して独自のカスタムフォントを作成することはできますか?

java - Atomikos、Tomcat、トランザクションログ、システムプロパティを監視しない

java - 自動vsカスタムLuceneスコアリング

java - Mac OS X YosemiteでのNetLogo R拡張機能のインストールエラー

java - RESTfulアプリの設計…Java Webアプリのうち

java - 相互互換性のためにC#暗号化をJava(Android)暗号化に変換するヘルプ