aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/main/java/com/vaadin/data/Binder.java
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/main/java/com/vaadin/data/Binder.java')
-rw-r--r--server/src/main/java/com/vaadin/data/Binder.java30
1 files changed, 27 insertions, 3 deletions
diff --git a/server/src/main/java/com/vaadin/data/Binder.java b/server/src/main/java/com/vaadin/data/Binder.java
index f9e076e13f..360daa73bf 100644
--- a/server/src/main/java/com/vaadin/data/Binder.java
+++ b/server/src/main/java/com/vaadin/data/Binder.java
@@ -728,6 +728,23 @@ public class Binder<BEAN> implements Serializable {
*/
public BindingBuilder<BEAN, TARGET> asRequired(
ErrorMessageProvider errorMessageProvider);
+
+ /**
+ * Sets the field to be required and delegates the required check to a custom validator.
+ * This means two things:
+ * <ol>
+ * <li>the required indicator will be displayed for this field</li>
+ * <li>the field value is validated by customRequiredValidator</li>
+ * </ol>
+ *
+ * @see HasValue#setRequiredIndicatorVisible(boolean)
+ * @param customRequiredValidator
+ * validator responsible for the required check
+ * @return this binding, for chaining
+ * @since
+ */
+ public BindingBuilder<BEAN, TARGET> asRequired(
+ Validator<TARGET> customRequiredValidator);
}
/**
@@ -885,11 +902,18 @@ public class Binder<BEAN> implements Serializable {
@Override
public BindingBuilder<BEAN, TARGET> asRequired(
ErrorMessageProvider errorMessageProvider) {
+ return asRequired(
+ Validator.from(
+ value -> !Objects.equals(value, field.getEmptyValue()),
+ errorMessageProvider));
+ }
+
+ @Override
+ public BindingBuilder<BEAN, TARGET> asRequired(
+ Validator<TARGET> customRequiredValidator) {
checkUnbound();
field.setRequiredIndicatorVisible(true);
- return withValidator(
- value -> !Objects.equals(value, field.getEmptyValue()),
- errorMessageProvider);
+ return withValidator(customRequiredValidator);
}
/**