1

他の Bean のコレクションを参照する Bean があります。@Valid参照されるすべての Bean を検証に含めるために使用します。

public class MasterBean {
    @Valid
    private Collection<DetailBean> details;
    ... 
}

public class DetailBean {
    private String id;

    @NotBlank(message = "{name_not_blank_message_key}")
    private String name;
    ...
}

DetailBeanこれはこれまでのところ正常に機能し、ユーザーはすべてのインスタンスからすべての検証エラー メッセージを受け取ります。ただし、エラー メッセージには、どのインスタンスに関連しているかについての指示は含まれていません。理想的には、ユーザーは「Name of something is missing」のようなものを表示する必要があります。ここで、somethingidは特定のインスタンスのプロパティ (例: ) です。残念ながら、ストック MessageInterpolator は、静的注釈パラメーター ( など{min}) のプレースホルダーのみを許可し、Bean プロパティの置換をサポートしていません。

関連する投稿をいくつか読んだことがありますが、これが最も近いかもしれませんが、私の場合はどの提案も実行可能ではないようです (独自の MessageInterpolator 実装以外に、私が恐れていることは...)。

背景: 私は、RichFaces タグを広範囲に使用する JSF 2 プロジェクトに取り組んでいます。検証される Bean は JSF ページのバッキング Bean の一部であり、検証は<rich:graphValidator>フォームの送信時にタグによってトリガーされます。バックエンドは Hibernate Validator です。

4

1 に答える 1

0

検証された値を補間するだけで、Hibernate Validator 4.xを使用している場合は、ValueFormatterMessageInterpolatorを使用できます。これもカスタムMessageInterpolatorですが、自分で何も実装する必要はありません。

完全にカスタマイズ可能なレンダリング(式言語でのBeanプロパティのナビゲーションを含む)には、BeanValidation1.1およびHibernateValidator5が付属します。これらの機能は実装されていますが、最終リリースではまだ利用できません。BVAL-223およびHV-676も参照してください。

于 2013-01-31T10:52:47.450 に答える