From 88563b50a5106c3e6903377d0451777ca5224015 Mon Sep 17 00:00:00 2001 From: Christian Schulz Date: Mon, 13 Jun 2016 12:16:42 +0200 Subject: [PATCH] ValueObject will be created if all children are valid --- .../jsf/component/ValueObjectComponent.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/jsf-value-objects/src/main/java/de/openknowledge/jsf/component/ValueObjectComponent.java b/jsf-value-objects/src/main/java/de/openknowledge/jsf/component/ValueObjectComponent.java index fb2f537..cc25cff 100644 --- a/jsf-value-objects/src/main/java/de/openknowledge/jsf/component/ValueObjectComponent.java +++ b/jsf-value-objects/src/main/java/de/openknowledge/jsf/component/ValueObjectComponent.java @@ -211,16 +211,22 @@ public void run() { @Override protected Object getConvertedValue(final FacesContext context, Object submittedValue) throws ConverterException { final List parameters = new ArrayList<>(); + final boolean[] isValid = {true}; forEachChild(new ChildProcessor() { public void process(UIInput child) { - if (!child.isValid()) { - throw new ConverterException(child.getClientId() + " is invalid"); + isValid[0] &= child.isValid(); + if (isValid[0]) { + parameters.add(child); } - parameters.add(child); } }); - return newInstance(context, parameters.toArray(new UIInput[parameters.size()])); + if (isValid[0]) { + return newInstance(context, parameters.toArray(new UIInput[parameters.size()])); + } else { + setValid(false); + return null; + } } protected Object newInstance(final FacesContext context, UIInput... parameterComponents) {