提交 0543a294 编写于 作者: J Juergen Hoeller

expose arrays as comma-delimited element String

上级 78406834
...@@ -18,6 +18,8 @@ package org.springframework.validation; ...@@ -18,6 +18,8 @@ package org.springframework.validation;
import org.springframework.beans.PropertyAccessException; import org.springframework.beans.PropertyAccessException;
import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
/** /**
* Default {@link BindingErrorProcessor} implementation. * Default {@link BindingErrorProcessor} implementation.
...@@ -65,8 +67,12 @@ public class DefaultBindingErrorProcessor implements BindingErrorProcessor { ...@@ -65,8 +67,12 @@ public class DefaultBindingErrorProcessor implements BindingErrorProcessor {
String field = ex.getPropertyName(); String field = ex.getPropertyName();
String[] codes = bindingResult.resolveMessageCodes(ex.getErrorCode(), field); String[] codes = bindingResult.resolveMessageCodes(ex.getErrorCode(), field);
Object[] arguments = getArgumentsForBindError(bindingResult.getObjectName(), field); Object[] arguments = getArgumentsForBindError(bindingResult.getObjectName(), field);
Object rejectedValue = ex.getValue();
if (rejectedValue != null && rejectedValue.getClass().isArray()) {
rejectedValue = StringUtils.arrayToCommaDelimitedString(ObjectUtils.toObjectArray(rejectedValue));
}
bindingResult.addError(new FieldError( bindingResult.addError(new FieldError(
bindingResult.getObjectName(), field, ex.getValue(), true, bindingResult.getObjectName(), field, rejectedValue, true,
codes, arguments, ex.getLocalizedMessage())); codes, arguments, ex.getLocalizedMessage()));
} }
......
...@@ -16,14 +16,6 @@ ...@@ -16,14 +16,6 @@
package org.springframework.web.servlet.mvc.annotation; package org.springframework.web.servlet.mvc.annotation;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.io.Writer; import java.io.Writer;
...@@ -43,7 +35,6 @@ import java.util.List; ...@@ -43,7 +35,6 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.servlet.ServletConfig; import javax.servlet.ServletConfig;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
import javax.servlet.ServletException; import javax.servlet.ServletException;
...@@ -54,8 +45,9 @@ import javax.servlet.http.HttpSession; ...@@ -54,8 +45,9 @@ import javax.servlet.http.HttpSession;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import org.junit.Ignore; import static org.junit.Assert.*;
import org.junit.Test; import org.junit.Test;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.aop.interceptor.SimpleTraceInterceptor; import org.springframework.aop.interceptor.SimpleTraceInterceptor;
import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.DefaultPointcutAdvisor;
...@@ -90,6 +82,7 @@ import org.springframework.util.SerializationTestUtils; ...@@ -90,6 +82,7 @@ import org.springframework.util.SerializationTestUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors; import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.CookieValue;
...@@ -1303,6 +1296,9 @@ public class ServletAnnotationControllerTests { ...@@ -1303,6 +1296,9 @@ public class ServletAnnotationControllerTests {
@RequestMapping("/myPath.do") @RequestMapping("/myPath.do")
public String myHandle(@ModelAttribute("myCommand") TestBean tb, BindingResult errors, ModelMap model) { public String myHandle(@ModelAttribute("myCommand") TestBean tb, BindingResult errors, ModelMap model) {
FieldError error = errors.getFieldError("age");
assertNotNull("Must have field error for age property", error);
assertEquals("value2", error.getRejectedValue());
if (!model.containsKey("myKey")) { if (!model.containsKey("myKey")) {
model.addAttribute("myKey", "myValue"); model.addAttribute("myKey", "myValue");
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册