aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/main/java/com')
-rw-r--r--server/src/main/java/com/vaadin/data/Binder.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/server/src/main/java/com/vaadin/data/Binder.java b/server/src/main/java/com/vaadin/data/Binder.java
index 699185dea3..747983bfa5 100644
--- a/server/src/main/java/com/vaadin/data/Binder.java
+++ b/server/src/main/java/com/vaadin/data/Binder.java
@@ -1787,6 +1787,23 @@ public class Binder<BEAN> implements Serializable {
}
/**
+ * Writes successfully converted and validated changes from the bound fields
+ * to the bean even if there are other fields with non-validated changes.
+ *
+ * @see #writeBean(Object)
+ * @see #writeBeanIfValid(Object)
+ * @see #readBean(Object)
+ * @see #setBean(Object)
+ *
+ * @param bean
+ * the object to which to write the field values, not
+ * {@code null}
+ */
+ public void writeBeanAsDraft(BEAN bean) {
+ doWriteDraft(bean, new ArrayList<>(bindings));
+ }
+
+ /**
* Writes changes from the bound fields to the given bean if all validators
* (binding and bean level) pass.
* <p>
@@ -1874,6 +1891,23 @@ public class Binder<BEAN> implements Serializable {
}
/**
+ * Writes the successfully converted and validated field values into the
+ * given bean.
+ *
+ * @param bean
+ * the bean to write field values into
+ * @param bindings
+ * the set of bindings to write to the bean
+ */
+ @SuppressWarnings({ "unchecked" })
+ private void doWriteDraft(BEAN bean, Collection<Binding<BEAN, ?>> bindings) {
+ Objects.requireNonNull(bean, "bean cannot be null");
+
+ bindings.forEach(binding -> ((BindingImpl<BEAN, ?, ?>) binding)
+ .writeFieldValue(bean));
+ }
+
+ /**
* Restores the state of the bean from the given values. This method is used
* together with {@link #getBeanState(Object, Collection)} to provide a way
* to revert changes in case the bean validation fails after save.