In Binder#asRequired(), the code is:
return asRequired(Validator.from(
value -> !Objects.equals(value, field.getEmptyValue()),
errorMessageProvider));
However HasField has a more flexible way to achieve that: HasField#isEmpty(), which by default does the same but applications can override it.
For example for some fields I use:
@Override
public boolean isEmpty() {
String value = getValue();
return value == null || value.trim().isEmpty();
}
Perhaps a new addition to HasValue could be:
public default boolean isEmpty(V value) {
return Objects.equals(value, getEmptyValue());
}
Which could then be easily pverriden.