代码之家  ›  专栏  ›  技术社区  ›  Carlos Laspina

字段的绑定验证器对于NullPresentation值不能正常工作

  •  1
  • Carlos Laspina  · 技术社区  · 8 年前

    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 = 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);
    

    验证器按预期工作

    除非是零(null表示),在这种情况下,验证不起作用。

    enter image description here

    我可以解决这个问题,删除 withNullRepresentation(0) 但当我对我的表格收费时 null

    enter image description here enter image description here

    当我为 领域

    1 回复  |  直到 8 年前
        1
  •  1
  •   Mika    8 年前

    瓦丁 RangeValidator 退货 true null 价值什么时候 0 然后用户输入 "0" 值,该值对此验证器有效。

    不 回来 对于 无效的

    有时你需要知道 无效的 和 0 值,然后使用转换 无效的 "" 演示而不是使用 withNullPresentation(0) 将非常有用。