From 86475593bbb7e660e0e34f8fd119a95c4581a35b Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 14 Dec 2009 21:42:17 +0000 Subject: [PATCH] added special handling of String array values for required fields, e.g. for WebRequestDataBinder (SPR-6552) --- .../org/springframework/validation/DataBinder.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java b/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java index b5d13ef1847..dbc25972dfb 100644 --- a/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java +++ b/org.springframework.context/src/main/java/org/springframework/validation/DataBinder.java @@ -623,8 +623,17 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter { } for (String field : requiredFields) { PropertyValue pv = propertyValues.get(field); - if (pv == null || pv.getValue() == null || - (pv.getValue() instanceof String && !StringUtils.hasText((String) pv.getValue()))) { + boolean empty = (pv == null || pv.getValue() == null); + if (!empty) { + if (pv.getValue() instanceof String) { + empty = !StringUtils.hasText((String) pv.getValue()); + } + else if (pv.getValue() instanceof String[]) { + String[] values = (String[]) pv.getValue(); + empty = (values.length == 0 || !StringUtils.hasText(values[0])); + } + } + if (empty) { // Use bind error processor to create FieldError. getBindingErrorProcessor().processMissingFieldError(field, getInternalBindingResult()); // Remove property from property values to bind: