From f22aebd5902f4e97be3e997d2e711626be76bfc5 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) git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2660 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../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: