1

Hibernate Validator 3.1.0.GA がプロパティ ファイル ValidationMessages.properties でカスタム検証メッセージを検索しないという問題があります。

この問題を説明するために、git から取得できる小さなサンプル プロジェクトを作成しました。

git clone https://bitbucket.org/sstein/validation-example.git

ソース ツリーを取得したら、以下を使用して作成した単体テストを実行して、問題をテストできます。

mvn test

3 つのテスト ケースがあり、validateDescriptionTest(com.example.MyClassTest) は次のエラーで失敗しています。

想定:<[説明は 1 ~ 10 文字の長さである必要があります。]> でしたが:<[{descriptionMsg}]>

また、単体テストでリソース バンドルにアクセスできることを確認するテスト ケースも追加しました。

これが失敗する理由を誰かが知っていますか?

PS: 自分で試すことができるように、例を追加して最初の質問を完全に書き直しました。

4

2 に答える 2

2

ValidationMessages.properties の最終的な場所は、WEB-INF/classes にある必要があります。どのようにそこに到達するかは、使用しているビルド システムと構成方法によって異なります。NetBeans IDE では、Web アプリケーションを作成するときに、ValidationMessages.properties をデフォルトの Java パッケージに入れるだけです。

ビルド ツールとして Maven を使用している場合は、プロパティを /src/main/resources ディレクトリに配置します。これにより、Maven はプロパティを WEB-INF/classes にコピーします。

プロパティ ファイルが適切な場所にあることを確認するには、.war ファイルを ZIP として開き、確認してください。もう 1 つの確認方法は、JSF が内部のバリデータ メッセージを取得するかどうかを確認することです。

@Size のような JSR-303 メッセージの場合、上記のプロパティ キーは正しいはずです。

于 2012-06-14T10:25:22.417 に答える
1

したがって、解決策は簡単で、Hibernate の Hardy Ferentschik によって発見されました

Hibernate Validator 3.1.0.GA では、バンドルはValidatorMessages.propertiesと呼ぶ必要があり、 ValidationMessages.propertiesではありません。

于 2012-06-15T12:45:39.750 に答える