2

如何为 UIComponent 属性创建自定义数据类型?

示例:假设一个人有一个UIInputDate(an UIInput) 并且有一个属性Date maxDate,我将如何确保maxDate输入的任何内容都将始终为Date

4

1 回答 1

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.
}
于 2013-08-12T19:40:27.113 回答