字段的活页夹验证器不能正常工作 NullPresentation 值
Binder validator for field doesn't work properly for NullPresentation value
我有以下 class:
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;
}
}
例如,当我为名为 number 的字段设置一个简单的活页夹时,关联到 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
文本,如下所示:
How to validate Zero value when I put a null representation for the
field?
Vaadin RangeValidator returns true
验证 null
值时。当 null
表示为 0
时,用户输入 "0"
结果 null
值,该值对此验证器有效。
您可以通过实现一个验证器来解决这个问题,该验证器 not return true
for null
value.
有时您需要知道 null
和 0
值之间的差异,然后使用将 null
转换为 ""
表示的转换器而不是使用 withNullPresentation(0)
会有用。
我有以下 class:
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;
}
}
例如,当我为名为 number 的字段设置一个简单的活页夹时,关联到 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
文本,如下所示:
How to validate Zero value when I put a null representation for the field?
Vaadin RangeValidator returns true
验证 null
值时。当 null
表示为 0
时,用户输入 "0"
结果 null
值,该值对此验证器有效。
您可以通过实现一个验证器来解决这个问题,该验证器 not return true
for null
value.
有时您需要知道 null
和 0
值之间的差异,然后使用将 null
转换为 ""
表示的转换器而不是使用 withNullPresentation(0)
会有用。