1

我有一个 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,则不会调用验证器。

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

4

1 回答 1

1

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

将验证器子类化以返回 truevalidateOnNullValue()也可能会有所帮助。

来自 JavaDocs:

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

于 2013-02-13T16:00:21.953 回答