@@ -53,7 +53,7 @@ class WebRequestDataBinderTests {
5353 void bindingWithNestedObjectCreation () {
5454 TestBean tb = new TestBean ();
5555
56- WebRequestDataBinder binder = new WebRequestDataBinder (tb , "person" );
56+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
5757 binder .registerCustomEditor (ITestBean .class , new PropertyEditorSupport () {
5858 @ Override
5959 public void setAsText (String text ) throws IllegalArgumentException {
@@ -74,7 +74,7 @@ public void setAsText(String text) throws IllegalArgumentException {
7474 void bindingWithNestedObjectCreationThroughAutoGrow () {
7575 TestBean tb = new TestBeanWithConcreteSpouse ();
7676
77- WebRequestDataBinder binder = new WebRequestDataBinder (tb , "person" );
77+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
7878 binder .setIgnoreUnknownFields (false );
7979
8080 MockHttpServletRequest request = new MockHttpServletRequest ();
@@ -316,7 +316,7 @@ class DefaultAndMarkerPrefixTests {
316316 void shouldNotTriggerBindingWhenFieldIsNotAllowed () {
317317 TestBean tb = new TestBean ();
318318
319- WebRequestDataBinder binder = new WebRequestDataBinder (tb , "person" );
319+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
320320 binder .setAllowedFields ("name" );
321321
322322 MockHttpServletRequest request = new MockHttpServletRequest ();
@@ -332,7 +332,7 @@ void shouldNotTriggerBindingWhenFieldIsNotAllowed() {
332332 void shouldNotTriggerBindingWhenFieldIsDisallowed () {
333333 TestBean tb = new TestBean ();
334334
335- WebRequestDataBinder binder = new WebRequestDataBinder (tb , "person" );
335+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
336336 binder .setDisallowedFields ("country" );
337337
338338 MockHttpServletRequest request = new MockHttpServletRequest ();
@@ -344,12 +344,47 @@ void shouldNotTriggerBindingWhenFieldIsDisallowed() {
344344 assertThat (tb .getCountry ()).isNull ();
345345 }
346346
347+ @ Test
348+ void shouldNotTriggerBindingWhenFieldIsNotAllowedWithEmptyArrayIndex () {
349+ TestBean tb = new TestBean ();
350+
351+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
352+ binder .setAllowedFields ("name" );
353+
354+ MockHttpServletRequest request = new MockHttpServletRequest ();
355+ request .addParameter ("name" , "spring" );
356+ request .addParameter (prefix + "stringArray[]" , "ONE" );
357+ request .addParameter (prefix + "stringArray[]" , "TWO" );
358+ binder .bind (new ServletWebRequest (request ));
359+
360+ assertThat (tb .getName ()).isEqualTo ("spring" );
361+ assertThat (tb .getStringArray ()).isNull ();
362+ }
363+
364+ @ ParameterizedTest
365+ @ ValueSource (strings = { "stringArray*" , "stringArray[]" })
366+ void shouldNotTriggerBindingWhenFieldIsDisallowedWithEmptyArrayIndex (String disallowedField ) {
367+ TestBean tb = new TestBean ();
368+
369+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
370+ binder .setDisallowedFields (disallowedField );
371+
372+ MockHttpServletRequest request = new MockHttpServletRequest ();
373+ request .addParameter ("name" , "spring" );
374+ request .addParameter (prefix + "stringArray[]" , "ONE" );
375+ request .addParameter (prefix + "stringArray[]" , "TWO" );
376+ binder .bind (new ServletWebRequest (request ));
377+
378+ assertThat (tb .getName ()).isEqualTo ("spring" );
379+ assertThat (tb .getStringArray ()).isNull ();
380+ }
381+
347382 @ Test
348383 void shouldNotTriggerAutoGrowWhenFieldIsNotAllowed () {
349384 TestBean tb = new TestBean ();
350385 tb .setSomeMap (null );
351386
352- WebRequestDataBinder binder = new WebRequestDataBinder (tb , "person" );
387+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
353388 binder .setAllowedFields ("name" );
354389
355390 MockHttpServletRequest request = new MockHttpServletRequest ();
@@ -361,13 +396,14 @@ void shouldNotTriggerAutoGrowWhenFieldIsNotAllowed() {
361396 assertThat (tb .getSomeMap ()).isNull ();
362397 }
363398
364- @ Test
365- void shouldNotTriggerAutoGrowWhenFieldIsDisallowed () {
399+ @ ParameterizedTest
400+ @ ValueSource (strings = { "someMap*" , "someMap[*]" , "someMap[key1]" })
401+ void shouldNotTriggerAutoGrowWhenFieldIsDisallowed (String disallowedField ) {
366402 TestBean tb = new TestBean ();
367403 tb .setSomeMap (null );
368404
369- WebRequestDataBinder binder = new WebRequestDataBinder (tb , "person" );
370- binder .setDisallowedFields ("someMap[key1]" );
405+ WebRequestDataBinder binder = new WebRequestDataBinder (tb );
406+ binder .setDisallowedFields (disallowedField );
371407
372408 MockHttpServletRequest request = new MockHttpServletRequest ();
373409 request .addParameter ("name" , "spring" );
0 commit comments