Null检查手动转换的TextField值

时间:2013-02-13 15:25:52

标签: wicket

我有一个TextField,它覆盖了它的getConverter方法来代替添加Joda时间转换器:

new TextField<P>(id) {
    @Override
    public <P> IConverter<P> getConverter(Class<P> type) {
        return (IConverter<P>) new JodaDateTimeConverter();
    }
};

如果输入无效,转换器将返回null。但是,我希望能够根据需要标记此字段,我不知道该怎么做:

  • textField.isRequired(true)不起作用,因为在转换之前需要进行检查。这不适用于非空但无效的输入。
  • textField.add(.. some validator ..)不起作用,因为如果转换器返回null,则不会调用验证器。

我真的没有看到按要求标记我的日期字段的方法。你知道怎么做吗?可能我的方法根本不合适?

1 个答案:

答案 0 :(得分:1)

如果你添加一个INullAcceptingValidator而不是一个常规的,它也会被调用为空值。

对您的验证器进行子类化以在validateOnNullValue()上返回true也可能会有所帮助。

来自JavaDocs:

  

指示是否在值为null时验证该值。它是   通常希望跳过验证,如果值为null,除非我们   想要确保该值实际上是null(一个罕见的用例)。   扩展此并希望确保该值为null的验证器   应该覆盖此方法并返回true。