他の 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 です。