カスタム データ型を UIComponent 属性に作成するにはどうすればよいですか?
例: UIInputDate
(an UIInput
) と属性Date maxDate
がmaxDate
あるとしDate
ます。
通常の方法でカスタムバリデータを作成できます。入力コンポーネントはすでに 2 番目の引数として使用可能です。キャストするだけです。
public class UIInputDateRangeValidator implements Validator {
public void validate(FacesContext context, UIComponent component, Object value) {
UIInputDate inputDate = (UIInputDate) component;
Date minDate = inputDate.getMinDate();
Date maxDate = inputDate.getMaxDate();
Date date = (Date) value;
// ... Use Date#after(), Date#before(), etc.
}
}
カスタム コンポーネントのコンストラクターでバリデーターを作成して追加できます。
public UIInputDate() {
addValidator(new UIInputDateRangeValidator());
// You can use setConverter() with new DateTimeConverter() if you didn't already do that.
}