diff --git a/org.springframework.context/src/main/java/org/springframework/model/binder/Binder.java b/org.springframework.context/src/main/java/org/springframework/model/binder/Binder.java index fbb0bf1a938..0c5b7a31ca2 100644 --- a/org.springframework.context/src/main/java/org/springframework/model/binder/Binder.java +++ b/org.springframework.context/src/main/java/org/springframework/model/binder/Binder.java @@ -21,7 +21,6 @@ import java.util.Map; * Bind to fields of a model object. * @author Keith Donald * @since 3.0 - * @see #bind(Map) * @param The type of model this binder binds to */ public interface Binder { diff --git a/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResult.java b/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResult.java index f935e75035d..db779266dee 100644 --- a/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResult.java +++ b/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResult.java @@ -21,7 +21,7 @@ import org.springframework.model.alert.Alert; * The result of a bind operation. * @author Keith Donald * @since 3.0 - * @see Binder#bind(java.util.Map) + * @see Binder#bind(java.util.Map, Object) */ public interface BindingResult { diff --git a/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResults.java b/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResults.java index 4f39f3ad438..56893eb4647 100644 --- a/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResults.java +++ b/org.springframework.context/src/main/java/org/springframework/model/binder/BindingResults.java @@ -15,13 +15,13 @@ */ package org.springframework.model.binder; -import java.util.List; +import org.springframework.model.alert.Severity; /** * The results of a bind operation. * @author Keith Donald * @since 3.0 - * @see Binder#bind(UserValues) + * @see Binder#bind(java.util.Map, Object) */ public interface BindingResults extends Iterable { @@ -30,17 +30,22 @@ public interface BindingResults extends Iterable { */ BindingResults successes(); - /** - * If there is at least one failed BindingResult. - * @see BindingResult#isFailure() - */ - boolean hasFailures(); - /** * The subset of BindingResults that failed. */ BindingResults failures(); - + + /** + * If there is at least one failure with a Severity equal to or greater than {@link Severity#ERROR}. + * @see BindingResults#failures() + */ + boolean hasErrors(); + + /** + * The subset of BindingResults that failed with {@link Severity#ERROR} or greater. + */ + BindingResults errors(); + /** * The total number of results. */ @@ -52,9 +57,4 @@ public interface BindingResults extends Iterable { */ BindingResult get(int index); - /** - * The ordered list of properties for which a {@link BindingResult} was returned. - */ - List properties(); - } diff --git a/org.springframework.context/src/main/java/org/springframework/model/binder/MissingFieldException.java b/org.springframework.context/src/main/java/org/springframework/model/binder/MissingFieldException.java index 74b5eaff3bd..89c99944e7f 100644 --- a/org.springframework.context/src/main/java/org/springframework/model/binder/MissingFieldException.java +++ b/org.springframework.context/src/main/java/org/springframework/model/binder/MissingFieldException.java @@ -23,7 +23,7 @@ import java.util.Map; * Indicates a client configuration error. * @author Keith Donald * @since 3.0 - * @see Binder#bind(java.util.Map) + * @see Binder#bind(Map, Object) */ @SuppressWarnings("serial") public class MissingFieldException extends RuntimeException { diff --git a/org.springframework.context/src/main/java/org/springframework/model/binder/support/AbstractBinder.java b/org.springframework.context/src/main/java/org/springframework/model/binder/support/AbstractBinder.java index 511972dc962..2388d269e02 100644 --- a/org.springframework.context/src/main/java/org/springframework/model/binder/support/AbstractBinder.java +++ b/org.springframework.context/src/main/java/org/springframework/model/binder/support/AbstractBinder.java @@ -31,8 +31,8 @@ import org.springframework.util.Assert; * @since 3.0 * @see #setRequiredFields(String[]) * @see #setMessageSource(MessageSource) - * @see #bind(Map, Object) * @see #createBindTemplate() + * @see #bind(Map, Object) */ public abstract class AbstractBinder implements Binder { diff --git a/org.springframework.context/src/main/java/org/springframework/model/binder/support/ArrayListBindingResults.java b/org.springframework.context/src/main/java/org/springframework/model/binder/support/ArrayListBindingResults.java index 217ebd58a7c..a89f478c7aa 100644 --- a/org.springframework.context/src/main/java/org/springframework/model/binder/support/ArrayListBindingResults.java +++ b/org.springframework.context/src/main/java/org/springframework/model/binder/support/ArrayListBindingResults.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import org.springframework.model.alert.Severity; import org.springframework.model.binder.BindingResult; import org.springframework.model.binder.BindingResults; @@ -56,10 +57,6 @@ class ArrayListBindingResults implements BindingResults { return results; } - public boolean hasFailures() { - return failures().size() > 0; - } - public BindingResults failures() { ArrayListBindingResults results = new ArrayListBindingResults(); for (BindingResult result : this) { @@ -70,16 +67,22 @@ class ArrayListBindingResults implements BindingResults { return results; } - public BindingResult get(int index) { - return results.get(index); + public boolean hasErrors() { + return errors().size() > 0; + } + + public BindingResults errors() { + ArrayListBindingResults results = new ArrayListBindingResults(); + for (BindingResult result : this) { + if (result.isFailure() && result.getAlert().getSeverity().compareTo(Severity.ERROR) >= 0) { + results.add(result); + } + } + return results; } - public List properties() { - List properties = new ArrayList(results.size()); - for (BindingResult result : this) { - properties.add(result.getFieldName()); - } - return properties; + public BindingResult get(int index) { + return results.get(index); } public int size() {