Merge branch '6.2.x'

This commit is contained in:
Simon Baslé
2024-12-27 11:00:10 +01:00
4 changed files with 167 additions and 2 deletions

View File

@@ -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);
}

View File

@@ -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();