2017-09-30 3 views
1

Ich habe die folgende Klasse:Binder Validator für Feld nicht richtig funktioniert für NullPresentation Wert

public class FooClass { 

     Integer number; 

     String numberInLetters; 

     public Integer getNumber() { 
      return number; 
     } 

     public void setNumber(Integer number) { 
      this.number = number; 
     } 

     public String getNumberInLetters() { 
      return numberInLetters; 
     } 

     public void setNumberInLetters(String numberInLetters) { 
      this.numberInLetters = numberInLetters; 
     } 
    } 

Als ich eingestellt, beispielsweise ein einfaches Bindemittel für ein Feld mit dem Namen Nummer, assoziiert fooObject:

FooObject fooObject = new FooObject(); 
fooObject.setNumberInLetters("thirty"); 

IntegerRangeValidator validator = new IntegerRangeValidator("The value must be greater than or equal to 30", 30, null); 
validator.setMinValueIncluded(true); 

Binder<FooObject> binder = new Binder<>(); 
binder.forField(number) 
       .withConverter(Integer::valueOf, String::valueOf, "Must be a number") 
       .withNullRepresentation(0) 
       .withValidator(intervaloValidator) 
       .bind(FooObject::getNumber, Fooobject::setNumber); 

Der Validator als

    erwartet funktioniert
  • error with one
  • must be a number error
  • validation succesfully

Außer bei Null (null Darstellung), in diesem Fall wird die Validierung nicht funktioniert.

enter image description here

ich dieses Problem beheben kann, zu entfernen withNullRepresentation(0) aber wenn ich meine Form zeigen null Text, wie dies gebührenpflichtig:

enter image description here enter image description here

Wie Nullwert bestätigen, wenn ich setzen eine Nulldarstellung für das Feld ?

Antwort

1

Vaadin RangeValidator kehrt true wenn null Wert zu validieren. Wenn null Präsentation ist 0 dann Benutzereingabe "0" Ergebnisse null Wert, der für diesen Validator gültig ist.

Sie können dieses Problem beheben, indem ein Validator implementieren, nicht Rückkehr true für null Wert der Fall ist.

In einigen Fällen müssen Sie Unterschied zwischen null und 0 Werte kennen, so dann einen Konverter, der null zu "" Präsentation konvertiert statt withNullPresentation(0) der Verwendung von Nutzen sein wird.

Verwandte Themen