hibernate バリデーター 3.1.0.GA でクロスフィールド検証を実施するにはどうすればよいですか
create table user (id, start_date, end_date, ...) 例: 学生の大学卒業の終了日は、卒業の開始日より後にする必要があります
保存/更新操作時に検証メッセージを UI に表示できるように、これをどのように強制するか。UI は JSF、Richfaces を使用して構築されています。
hibernate バリデーター 3.1.0.GA でクロスフィールド検証を実施するにはどうすればよいですか
create table user (id, start_date, end_date, ...) 例: 学生の大学卒業の終了日は、卒業の開始日より後にする必要があります
保存/更新操作時に検証メッセージを UI に表示できるように、これをどのように強制するか。UI は JSF、Richfaces を使用して構築されています。
これを行うには、カスタム バリデータを作成します。詳細については、ドキュメントを参照してください。
Hibernate Validator (JSR 303) を使用したクロスフィールド検証で重複した質問 (および回答) を参照してください。
つまり、クラス レベル ConstraintViolation を検証対象の特定のフィールドに関連付けるカスタム クラス レベル バリデーターを作成します。
これを試して:
public class User {
private Date startDate = null;
private Date endDate = null;
@SuppressWarnings("unused")
@AssertTrue(message="college graduation finishing date for a student should be greater than the graduation start date")
private boolean dateValidation() {
return this.startDate < this.endDate;
}
}
このアプローチのために
@SuppressWarnings("unused")
@AssertTrue(message="college graduation finishing date for a student should be greater than the graduation start date") private boolean dateValidation() { return this.startDate < this.endDate; }
有効にするには、標準の Bean 仕様に準拠する必要があります。これは、get/set/ または「is」プレフィックスのいずれかを意味します。isDateValid() は機能します-