org.springframework.validation.DataBinder to perform data binding
from servlet request parameters to JavaBeans, including support for multipart files.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.
See the DataBinder/WebDataBinder superclasses for customization options, which include specifying allowed/required fields, and registering custom property editors.
Can also be used for manual data binding. Simply instantiate a
ServletRequestDataBinder for each binding process, and invoke bind
with the current ServletRequest as argument:
MyBean myBean = new MyBean(); // apply binder to custom target object ServletRequestDataBinder binder = new ServletRequestDataBinder(myBean); // register custom editors, if desired binder.registerCustomEditor(...); // trigger actual binding of request parameters binder.bind(request); // optionally evaluate binding errors Errors errors = binder.getErrors(); ...
bind(jakarta.servlet.ServletRequest) , registerCustomEditor, setAllowedFields, setRequiredFields, setFieldMarkerPrefix
| Modifier and Type | Class and Description |
|---|---|
| protected static class | ServletRequestDataBinder.
Resolver that looks up values to bind in a |
| Access | Constructor and Description |
|---|---|
| public | ServletRequestDataBinder(Object
the target object to bind onto (or target)null
if the binder is just used to convert a plain parameter value)Create a new ServletRequestDataBinder instance, with default object name. |
| public | ServletRequestDataBinder(Object
the target object to bind onto (or target, String null
if the binder is just used to convert a plain parameter value)the name of the target object objectName)Create a new ServletRequestDataBinder instance. |
| Modifier and Type | Method and Description |
|---|---|
| protected void | addBindValues(MutablePropertyValues
the property values that will be used for data binding mpvs, ServletRequest the current request request)Extension point that subclasses can use to add extra bind values for a request. |
| public void | bind(ServletRequest
the request with parameters to bind (can be multipart) request)Bind the parameters of the given request to this binder's target, also binding multipart files in case of a multipart request. |
| public void | |
| public void | construct(ServletRequest
the request to bind request)Use a default or single data constructor to create the target by binding request parameters, multipart files, or parts to constructor args. |
| protected ServletRequestDataBinder. | createValueResolver(ServletRequest request)
Allow subclasses to create the |
| private static boolean | |
| protected boolean | shouldConstructArgument(MethodParameter param)
Overrides org. Whether to instantiate the constructor argument of the given type, matching its own constructor arguments to bind values. |
| public static DataBinder. |
| ServletRequestDataBinder | back to summary |
|---|---|
| public ServletRequestDataBinder(Object target) Create a new ServletRequestDataBinder instance, with default object name.
| |
| ServletRequestDataBinder | back to summary |
|---|---|
| public ServletRequestDataBinder(Object target, String objectName) Create a new ServletRequestDataBinder instance. | |
| addBindValues | back to summary |
|---|---|
| protected void addBindValues(MutablePropertyValues mpvs, ServletRequest request) Extension point that subclasses can use to add extra bind values for a
request. Invoked before
| |
| bind | back to summary |
|---|---|
| public void bind(ServletRequest request) Bind the parameters of the given request to this binder's target, also binding multipart files in case of a multipart request. This call can create field errors, representing basic binding errors like a required field (code "required"), or type mismatch between value and bean property (code "typeMismatch"). Multipart files are bound via their parameter name, just like normal HTTP parameters: i.e. "uploadedFile" to an "uploadedFile" bean property, invoking a "setUploadedFile" setter method. The type of the target property for a multipart file can be MultipartFile, byte[], or String. Servlet Part binding is also supported when the request has not been parsed to MultipartRequest via MultipartResolver.
| |
| closeNoCatch | back to summary |
|---|---|
| public void closeNoCatch() throws ServletRequestBindingException Treats errors as fatal. Use this method only if it's an error if the input isn't valid. This might be appropriate if all input is from dropdowns, for example.
| |
| construct | back to summary |
|---|---|
| public void construct(ServletRequest request) Use a default or single data constructor to create the target by binding request parameters, multipart files, or parts to constructor args. After the call, use
| |
| createValueResolver | back to summary |
|---|---|
| protected ServletRequestDataBinder. Allow subclasses to create the
| |
| isFormDataPost | back to summary |
|---|---|
| private static boolean isFormDataPost(ServletRequest request) | |
| shouldConstructArgument | back to summary |
|---|---|
| protected boolean shouldConstructArgument(MethodParameter param) Overrides org. Doc from org. Whether to instantiate the constructor argument of the given type, matching its own constructor arguments to bind values. By default, simple value types, maps, collections, and arrays are excluded from nested constructor binding initialization.
| |
| valueResolver | back to summary |
|---|---|
| public static DataBinder. Return a
| |
ServletRequest.
| Modifier and Type | Field and Description |
|---|---|
| private final WebDataBinder | |
| private Set | |
| private final ServletRequest |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| private Object | |
| public Set | getNames()
Implements org. Return the names of all property values. |
| protected ServletRequest | |
| protected Object | |
| protected Set | |
| public final Object | resolveValue(String
the name to use for the lookup, possibly a nested path
for constructor parameters on nested objects name, Class<?> the target type, based on the constructor parameter type paramType)Implements org. Resolve the value for the given name and target parameter type. |
| dataBinder | back to summary |
|---|---|
| private final WebDataBinder dataBinder | |
| parameterNames | back to summary |
|---|---|
| private Set<String> parameterNames
| |
| request | back to summary |
|---|---|
| private final ServletRequest request | |
| ServletRequestValueResolver | back to summary |
|---|---|
| protected ServletRequestValueResolver(ServletRequest request, WebDataBinder dataBinder) | |
| getMultipartValue | back to summary |
|---|---|
private Object getMultipartValue(String name)
| |
| getNames | back to summary |
|---|---|
| public Set Implements org. Doc from org. Return the names of all property values.
| |
| getRequest | back to summary |
|---|---|
| protected ServletRequest getRequest() | |
| getRequestParameter | back to summary |
|---|---|
protected Object getRequestParameter(String name, Class<?> type)
| |
| initParameterNames | back to summary |
|---|---|
| protected Set | |
| resolveValue | back to summary |
|---|---|
| public final Object resolveValue(String name, Class<?> paramType) Implements org. Doc from org. Resolve the value for the given name and target parameter type. | |