如何为 UIComponent 属性创建自定义数据类型?
示例:假设一个人有一个UIInputDate
(an UIInput
) 并且有一个属性Date maxDate
,我将如何确保maxDate
输入的任何内容都将始终为Date
?
您可以按照通常的方式创建自定义验证器。输入组件已经可以作为第二个参数使用,你只需要转换它。
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.
}