Нулева проверка на ръчно преобразуваната стойност на TextField

Имам TextField, който замества своя метод getConverter, за да добави вместо това преобразувател на време Joda:

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

Конверторът връща нула, ако въведеното е невалидно. Искам обаче да мога да маркирам това поле според изискванията и не знам как да го направя:

  • textField.isRequired(true) не работи, защото задължителните проверки се извършват преди конвертирането. Това не работи за непразни, но невалидни входове.
  • textField.add(.. some validator ..) не работи, защото не се извиква валидатор, ако конверторът върне нула.

Наистина не виждам подход за отбелязване на моите полета за дата, както се изисква. Знаете ли как се прави това? Вероятно подходът ми изобщо не е подходящ?


person Sebastian vom Meer    schedule 13.02.2013    source източник


Отговори (1)


Ако добавите INullAcceptingValidator вместо обикновен, той ще бъде извикан и за нулеви стойности.

Подкласирането на вашите валидатори за връщане на true на validateOnNullValue() също може да бъде полезно.

От JavaDocs:

Показва дали да се потвърди или не стойността, ако е нула. Обикновено е желателно да се пропусне проверката, ако стойността е null, освен ако не искаме да сме сигурни, че стойността всъщност е null (рядък случай на употреба). Валидаторите, които разширяват това и искат да гарантират, че стойността е нула, трябва да отменят този метод и да върнат true.

person Nicktar    schedule 13.02.2013
comment
Точно това, което търсих. Много благодаря! - person Sebastian vom Meer; 13.02.2013