@Test public void testBindingWithAllowedFields() throws BindException { TestBean rod = new TestBean(); DataBinder binder = new DataBinder(rod); binder.setAllowedFields("name", "myparam"); MutablePropertyValues pvs = new MutablePropertyValues(); pvs.add("name", "Rod"); pvs.add("age", "32x"); binder.bind(pvs); binder.close(); assertTrue("changed name correctly", rod.getName().equals("Rod")); assertTrue("did not change age", rod.getAge() == 0); }
@Test public void testBindingWithAllowedFieldsUsingAsterisks() throws BindException { TestBean rod = new TestBean(); DataBinder binder = new DataBinder(rod, "person"); binder.setAllowedFields("nam*", "*ouchy"); MutablePropertyValues pvs = new MutablePropertyValues(); pvs.add("name", "Rod"); pvs.add("touchy", "Rod"); pvs.add("age", "32x"); binder.bind(pvs); binder.close(); assertTrue("changed name correctly", "Rod".equals(rod.getName())); assertTrue("changed touchy correctly", "Rod".equals(rod.getTouchy())); assertTrue("did not change age", rod.getAge() == 0); String[] disallowedFields = binder.getBindingResult().getSuppressedFields(); assertEquals(1, disallowedFields.length); assertEquals("age", disallowedFields[0]); Map<?,?> m = binder.getBindingResult().getModel(); assertTrue("There is one element in map", m.size() == 2); TestBean tb = (TestBean) m.get("person"); assertTrue("Same object", tb.equals(rod)); }
@Test public void testBindingWithAllowedAndDisallowedMapFields() throws BindException { TestBean rod = new TestBean(); DataBinder binder = new DataBinder(rod); binder.setAllowedFields("someMap[key1]", "someMap[key2]"); binder.setDisallowedFields("someMap['key3']", "someMap[key4]"); MutablePropertyValues pvs = new MutablePropertyValues(); pvs.add("someMap[key1]", "value1"); pvs.add("someMap['key2']", "value2"); pvs.add("someMap[key3]", "value3"); pvs.add("someMap['key4']", "value4"); binder.bind(pvs); binder.close(); assertEquals("value1", rod.getSomeMap().get("key1")); assertEquals("value2", rod.getSomeMap().get("key2")); assertNull(rod.getSomeMap().get("key3")); assertNull(rod.getSomeMap().get("key4")); String[] disallowedFields = binder.getBindingResult().getSuppressedFields(); assertEquals(2, disallowedFields.length); assertTrue(ObjectUtils.containsElement(disallowedFields, "someMap[key3]")); assertTrue(ObjectUtils.containsElement(disallowedFields, "someMap[key4]")); }
@Test public void testBindingWithAllowedAndDisallowedFields() throws BindException { TestBean rod = new TestBean(); DataBinder binder = new DataBinder(rod); binder.setAllowedFields("name", "myparam"); binder.setDisallowedFields("age"); MutablePropertyValues pvs = new MutablePropertyValues(); pvs.add("name", "Rod"); pvs.add("age", "32x"); binder.bind(pvs); binder.close(); assertTrue("changed name correctly", rod.getName().equals("Rod")); assertTrue("did not change age", rod.getAge() == 0); String[] disallowedFields = binder.getBindingResult().getSuppressedFields(); assertEquals(1, disallowedFields.length); assertEquals("age", disallowedFields[0]); }
@Test public void testBindingWithOverlappingAllowedAndDisallowedFields() throws BindException { TestBean rod = new TestBean(); DataBinder binder = new DataBinder(rod); binder.setAllowedFields("name", "age"); binder.setDisallowedFields("age"); MutablePropertyValues pvs = new MutablePropertyValues(); pvs.add("name", "Rod"); pvs.add("age", "32x"); binder.bind(pvs); binder.close(); assertTrue("changed name correctly", rod.getName().equals("Rod")); assertTrue("did not change age", rod.getAge() == 0); String[] disallowedFields = binder.getBindingResult().getSuppressedFields(); assertEquals(1, disallowedFields.length); assertEquals("age", disallowedFields[0]); }
@Test public void testTrackDisallowedFields() { TestBean testBean = new TestBean(); DataBinder binder = new DataBinder(testBean, "testBean"); binder.setAllowedFields("name", "age"); String name = "Rob Harrop"; String beanName = "foobar"; MutablePropertyValues mpvs = new MutablePropertyValues(); mpvs.add("name", name); mpvs.add("beanName", beanName); binder.bind(mpvs); assertEquals(name, testBean.getName()); String[] disallowedFields = binder.getBindingResult().getSuppressedFields(); assertEquals(1, disallowedFields.length); assertEquals("beanName", disallowedFields[0]); }
private void allowFieldsForDataBinding() { Set<String> propertyNames = getParameterNames(); this.dataBinder.setAllowedFields(propertyNames.toArray(new String[propertyNames.size()])); }
dataBinder.setAllowedFields(allowedFields);
private DataBinder dataBinder(String... allowedFields) { DataBinder dataBinder; if (rootName == null) { dataBinder = new DataBinder(blankInstance()); } else { dataBinder = new DataBinder(blankInstance(), rootName); } if (allowedFields.length > 0) { dataBinder.setAllowedFields(allowedFields); } SpringValidatorAdapter validator = new SpringValidatorAdapter(this.validatorFactory.getValidator()); dataBinder.setValidator(validator); dataBinder.setConversionService(formatters.conversion); dataBinder.setAutoGrowNestedPaths(true); if(this.directFieldAccess) { // FYI: initBeanPropertyAccess() is the default, let's switch to direct field access instead dataBinder.initDirectFieldAccess(); // this should happen last, when everything else was set on the dataBinder already } return dataBinder; }
dataBinder.setAllowedFields(allowedFields);
private DataBinder dataBinder(String... allowedFields) { DataBinder dataBinder; if (rootName == null) { dataBinder = new DataBinder(blankInstance()); } else { dataBinder = new DataBinder(blankInstance(), rootName); } if (allowedFields.length > 0) { dataBinder.setAllowedFields(allowedFields); } SpringValidatorAdapter validator = new SpringValidatorAdapter(this.validatorFactory.getValidator()); dataBinder.setValidator(validator); dataBinder.setConversionService(formatters.conversion); dataBinder.setAutoGrowNestedPaths(true); if(this.directFieldAccess) { // FYI: initBeanPropertyAccess() is the default, let's switch to direct field access instead dataBinder.initDirectFieldAccess(); // this should happen last, when everything else was set on the dataBinder already } return dataBinder; }
private DataBinder dataBinder(String... allowedFields) { DataBinder dataBinder; if (rootName == null) { dataBinder = new DataBinder(blankInstance()); } else { dataBinder = new DataBinder(blankInstance(), rootName); } if (allowedFields.length > 0) { dataBinder.setAllowedFields(allowedFields); } SpringValidatorAdapter validator = new SpringValidatorAdapter(this.validatorFactory.getValidator()); dataBinder.setValidator(validator); dataBinder.setConversionService(formatters.conversion); dataBinder.setAutoGrowNestedPaths(true); if(this.directFieldAccess) { // FYI: initBeanPropertyAccess() is the default, let's switch to direct field access instead dataBinder.initDirectFieldAccess(); // this should happen last, when everything else was set on the dataBinder already } return dataBinder; }