Package org.springframework.web.servlet.mvc.method.annotation

# Class ExtendedServletRequestDataBinder

java.lang.Object
org.springframework.validation.DataBinder
org.springframework.web.bind.WebDataBinder
org.springframework.web.bind.ServletRequestDataBinder
org.springframework.web.servlet.mvc.method.annotation.ExtendedServletRequestDataBinder

All Implemented Interfaces:
  `org.springframework.beans.PropertyEditorRegistry`, `org.springframework.beans.TypeConverter`

public class ExtendedServletRequestDataBinder extends org.springframework.web.bind.ServletRequestDataBinder
Subclass of `ServletRequestDataBinder` that adds URI template variables to the values used for data binding.

WARNING: Data binding can lead to security issues by exposing parts of the object graph that are not meant to be accessed or modified by external clients. Therefore, the design and use of data binding should be considered carefully with regard to security. For more details, please refer to the dedicated sections on data binding for Spring Web MVC and Spring WebFlux in the reference manual.

Since:
  3.1
Author:
  Rossen Stoyanchev
See Also:
  - `ServletRequestDataBinder`
  - `HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE`

## Nested Class Summary

## Nested classes/interfaces inherited from class org.springframework.web.bind.ServletRequestDataBinder

`org.springframework.web.bind.ServletRequestDataBinder.ServletRequestValueResolver`

## Nested classes/interfaces inherited from class org.springframework.validation.DataBinder

`org.springframework.validation.DataBinder.NameResolver, org.springframework.validation.DataBinder.ValueResolver`

## Field Summary

### Fields inherited from class org.springframework.web.bind.WebDataBinder

`DEFAULT_FIELD_DEFAULT_PREFIX, DEFAULT_FIELD_MARKER_PREFIX`

### Fields inherited from class org.springframework.validation.DataBinder

`DEFAULT_AUTO_GROW_COLLECTION_LIMIT, DEFAULT_OBJECT_NAME, logger`

## Constructor Summary

Constructors
Constructor
Description
`ExtendedServletRequestDataBinder(Object target)`
Create a new instance, with default object name.
`ExtendedServletRequestDataBinder(Object target, String objectName)`
Create a new instance.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`addBindValues(org.springframework.beans.MutablePropertyValues mpvs, ServletRequest request)`
Merge URI variables into the property values to use for data binding.
`void`
`addHeaderPredicate(Predicate<String> headerPredicate)`
Add a Predicate that filters the header names to use for data binding.
`protected org.springframework.web.bind.ServletRequestDataBinder.ServletRequestValueResolver`
`createValueResolver(ServletRequest request)`
`void`
`setHeaderPredicate(Predicate<String> headerPredicate)`
Set the Predicate that filters the header names to use for data binding.

### Methods inherited from class org.springframework.web.bind.ServletRequestDataBinder

`bind, closeNoCatch, construct, shouldConstructArgument, valueResolver`

### Methods inherited from class org.springframework.web.bind.WebDataBinder

`adaptEmptyArrayIndices, bindMultipart, checkFieldDefaults, checkFieldMarkers, doBind, getEmptyValue, getEmptyValue, getFieldDefaultPrefix, getFieldMarkerPrefix, isBindEmptyMultipartFiles, resolvePrefixValue, setBindEmptyMultipartFiles, setFieldDefaultPrefix, setFieldMarkerPrefix`

### Methods inherited from class org.springframework.validation.DataBinder

`addCustomFormatter, addCustomFormatter, addCustomFormatter, addValidators, applyPropertyValues, bind, checkAllowedFields, checkRequiredFields, close, construct, convertIfNecessary, convertIfNecessary, convertIfNecessary, convertIfNecessary, createBeanPropertyBindingResult, createDirectFieldBindingResult, findCustomEditor, getAllowedFields, getAutoGrowCollectionLimit, getBindingErrorProcessor, getBindingResult, getConversionService, getDisallowedFields, getInternalBindingResult, getNameResolver, getObjectName, getPropertyAccessor, getPropertyEditorRegistry, getRequiredFields, getSimpleTypeConverter, getTarget, getTargetType, getTypeConverter, getValidator, getValidators, getValidatorsToApply, initBeanPropertyAccess, initDirectFieldAccess, isAllowed, isAutoGrowNestedPaths, isDeclarativeBinding, isIgnoreInvalidFields, isIgnoreUnknownFields, registerCustomEditor, registerCustomEditor, replaceValidators, setAllowedFields, setAutoGrowCollectionLimit, setAutoGrowNestedPaths, setBindingErrorProcessor, setConversionService, setDeclarativeBinding, setDisallowedFields, setExcludedValidators, setIgnoreInvalidFields, setIgnoreUnknownFields, setMessageCodesResolver, setNameResolver, setRequiredFields, setTargetType, setValidator, shouldNotBindPropertyValues, validate, validate`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ExtendedServletRequestDataBinder

public ExtendedServletRequestDataBinder(@Nullable Object target)
Create a new instance, with default object name.

Parameters:
  `target` - the target object to bind onto (or `null` if the binder is just used to convert a plain parameter value)
See Also:
  - `DataBinder.DEFAULT_OBJECT_NAME`

### ExtendedServletRequestDataBinder

public ExtendedServletRequestDataBinder(@Nullable Object target, String objectName)
Create a new instance.

Parameters:
  `target` - the target object to bind onto (or `null` if the binder is just used to convert a plain parameter value)
  `objectName` - the name of the target object
See Also:
  - `DataBinder.DEFAULT_OBJECT_NAME`

## Method Details

### addHeaderPredicate

public void addHeaderPredicate(Predicate<String> headerPredicate)
Add a Predicate that filters the header names to use for data binding. Multiple predicates are combined with `AND`.

Parameters:
  `headerPredicate` - the predicate to add
Since:
  6.2.1

### setHeaderPredicate

public void setHeaderPredicate(Predicate<String> headerPredicate)
Set the Predicate that filters the header names to use for data binding.

Note that this method resets any previous predicates that may have been set, including headers excluded by default such as the RFC 9218 defined "Priority" header.

Parameters:
  `headerPredicate` - the predicate to add
Since:
  6.2.1

### createValueResolver

protected org.springframework.web.bind.ServletRequestDataBinder.ServletRequestValueResolver createValueResolver(ServletRequest request)

Overrides:
  `createValueResolver` in class `org.springframework.web.bind.ServletRequestDataBinder`

### addBindValues

protected void addBindValues(org.springframework.beans.MutablePropertyValues mpvs, ServletRequest request)
Merge URI variables into the property values to use for data binding.

Overrides:
  `addBindValues` in class `org.springframework.web.bind.ServletRequestDataBinder`