2017-09-30 10 views
1

私は以下のクラスがあります:私は設定した場合バインダーバリデータはNullPresentation値のために正常に動作しない

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; 
     } 
    } 

、例えば、名前のフィールドのためのシンプルなバインダーは、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); 

    ゼロ(ヌル表現)であり、この場合には、検証が機能しない場合を除き
  • error with one
  • must be a number error
  • validation succesfully

enter image description here

私はwithNullRepresentation(0)を削除し、この問題を解決することができますが、私はこのように、私のフォームショーnullテキストを充電する場合:私は入れたときにゼロ値を検証する方法

enter image description here enter image description here

フィールドのヌル表現ですか?

答えて

1

Vaadin RangeValidator戻りtruenull値を検証します。 nullプレゼンテーションが0の場合、ユーザ入力"0"の結果はnullで、このバリデータに有効です。

あなたはnull値のないリターンtrueを行うバリデータを実装することによってこの問題を解決することができます。

時々、あなたはそう、代わりに有用であろうwithNullPresentation(0)を使用してのnull""にプレゼンテーションを変換コンバータを使用してnull0値の差を知っておく必要があります。

関連する問題