JSF2自定义UIComponent属性数据类型

时间:2013-08-11 22:03:17

标签: java jsf-2

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

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

1 个答案:

答案 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.
}