如何为UIComponent属性创建自定义数据类型?
示例:假设一个人有一个UIInputDate
(一个UIInput
)并且有一个属性Date maxDate
,我将如何确保输入的maxDate
始终是如Date
?
答案 0 :(得分:1)
您可以按常规方式创建自定义验证程序。输入组件已作为第二个参数提供,您只需要将其强制转换。
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.
}