Merge branch '6.2.x'
This commit is contained in:
@@ -241,6 +241,10 @@ public class ServletRequestDataBinder extends WebDataBinder {
|
||||
|
||||
protected @Nullable Object getRequestParameter(String name, Class<?> type) {
|
||||
Object value = this.request.getParameterValues(name);
|
||||
if (value == null && !name.endsWith ("[]") &&
|
||||
(List.class.isAssignableFrom(type) || type.isArray())) {
|
||||
value = this.request.getParameterValues(name + "[]");
|
||||
}
|
||||
return (ObjectUtils.isArray(value) && Array.getLength(value) == 1 ? Array.get(value, 0) : value);
|
||||
}
|
||||
|
||||
|
||||
@@ -93,6 +93,32 @@ class ServletRequestDataBinderTests {
|
||||
assertThat(target.isPostProcessed()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFieldWithArrayIndex() {
|
||||
TestBean target = new TestBean();
|
||||
ServletRequestDataBinder binder = new ServletRequestDataBinder(target);
|
||||
binder.setIgnoreUnknownFields(false);
|
||||
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addParameter("stringArray[0]", "ONE");
|
||||
request.addParameter("stringArray[1]", "TWO");
|
||||
binder.bind(request);
|
||||
assertThat(target.getStringArray()).containsExactly("ONE", "TWO");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFieldWithEmptyArrayIndex() {
|
||||
TestBean target = new TestBean();
|
||||
ServletRequestDataBinder binder = new ServletRequestDataBinder(target);
|
||||
binder.setIgnoreUnknownFields(false);
|
||||
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addParameter("stringArray[]", "ONE");
|
||||
request.addParameter("stringArray[]", "TWO");
|
||||
binder.bind(request);
|
||||
assertThat(target.getStringArray()).containsExactly("ONE", "TWO");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFieldDefault() {
|
||||
TestBean target = new TestBean();
|
||||
|
||||
Reference in New Issue
Block a user