diff options
Diffstat (limited to 'server/src/main/java/com')
-rw-r--r-- | server/src/main/java/com/vaadin/data/Binder.java | 34 |
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. |