Merge branch '7.0.x'

This commit is contained in:
Sam Brannen
2026-04-16 16:35:25 +02:00
@@ -53,7 +53,7 @@ class WebRequestDataBinderTests {
void bindingWithNestedObjectCreation() {
TestBean tb = new TestBean();
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.registerCustomEditor(ITestBean.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text) throws IllegalArgumentException {
@@ -74,7 +74,7 @@ class WebRequestDataBinderTests {
void bindingWithNestedObjectCreationThroughAutoGrow() {
TestBean tb = new TestBeanWithConcreteSpouse();
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.setIgnoreUnknownFields(false);
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -316,7 +316,7 @@ class WebRequestDataBinderTests {
void shouldNotTriggerBindingWhenFieldIsNotAllowed() {
TestBean tb = new TestBean();
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.setAllowedFields("name");
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -332,7 +332,7 @@ class WebRequestDataBinderTests {
void shouldNotTriggerBindingWhenFieldIsDisallowed() {
TestBean tb = new TestBean();
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.setDisallowedFields("country");
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -344,12 +344,47 @@ class WebRequestDataBinderTests {
assertThat(tb.getCountry()).isNull();
}
@Test
void shouldNotTriggerBindingWhenFieldIsNotAllowedWithEmptyArrayIndex() {
TestBean tb = new TestBean();
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.setAllowedFields("name");
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("name", "spring");
request.addParameter(prefix + "stringArray[]", "ONE");
request.addParameter(prefix + "stringArray[]", "TWO");
binder.bind(new ServletWebRequest(request));
assertThat(tb.getName()).isEqualTo("spring");
assertThat(tb.getStringArray()).isNull();
}
@ParameterizedTest
@ValueSource(strings = { "stringArray*", "stringArray[]" })
void shouldNotTriggerBindingWhenFieldIsDisallowedWithEmptyArrayIndex(String disallowedField) {
TestBean tb = new TestBean();
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.setDisallowedFields(disallowedField);
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("name", "spring");
request.addParameter(prefix + "stringArray[]", "ONE");
request.addParameter(prefix + "stringArray[]", "TWO");
binder.bind(new ServletWebRequest(request));
assertThat(tb.getName()).isEqualTo("spring");
assertThat(tb.getStringArray()).isNull();
}
@Test
void shouldNotTriggerAutoGrowWhenFieldIsNotAllowed() {
TestBean tb = new TestBean();
tb.setSomeMap(null);
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.setAllowedFields("name");
MockHttpServletRequest request = new MockHttpServletRequest();
@@ -361,13 +396,14 @@ class WebRequestDataBinderTests {
assertThat(tb.getSomeMap()).isNull();
}
@Test
void shouldNotTriggerAutoGrowWhenFieldIsDisallowed() {
@ParameterizedTest
@ValueSource(strings = { "someMap*", "someMap[*]", "someMap[key1]" })
void shouldNotTriggerAutoGrowWhenFieldIsDisallowed(String disallowedField) {
TestBean tb = new TestBean();
tb.setSomeMap(null);
WebRequestDataBinder binder = new WebRequestDataBinder(tb, "person");
binder.setDisallowedFields("someMap[key1]");
WebRequestDataBinder binder = new WebRequestDataBinder(tb);
binder.setDisallowedFields(disallowedField);
MockHttpServletRequest request = new MockHttpServletRequest();
request.addParameter("name", "spring");