我有以下课程:
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);
验证器按预期工作
除非为零(空表示),在这种情况下,验证不起作用。
我可以解决这个问题,删除withNullRepresentation(0)
但是当我向表单显示null
文字时,就像这样:
如何为我设置空表示时验证零值 场?
答案 0 :(得分:1)
Vaadin RangeValidator在验证true
值时返回null
。当null
演示文稿为0
时,用户输入"0"
会生成null
值,该值对此验证程序有效。
您可以通过实现不返回true
null
值的验证程序来解决此问题。
有时您需要了解null
和0
值之间的差异,然后使用转换器将null
转换为""
呈现,而不是使用withNullPresentation(0)
会很有用。