Class WebExchangeDataBinder

All Implemented Interfaces:
PropertyEditorRegistry, TypeConverter

public class WebExchangeDataBinder extends WebDataBinder
Specialized DataBinder to perform data binding from URL query parameters or form data in the request data to Java objects.

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:
5.0
Author:
Rossen Stoyanchev, Juergen Hoeller
  • Constructor Details

    • WebExchangeDataBinder

      public WebExchangeDataBinder(@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:
    • WebExchangeDataBinder

      public WebExchangeDataBinder(@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
  • Method Details

    • construct

      public reactor.core.publisher.Mono<Void> construct(ServerWebExchange exchange)
      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 DataBinder.getBindingResult() to check for bind errors. If there are none, the target is set, and bind(org.springframework.web.server.ServerWebExchange) can be called for further initialization via setters.

      Parameters:
      exchange - the request to bind
      Returns:
      a Mono<Void> that completes when the target is created
      Since:
      6.1
    • shouldConstructArgument

      protected boolean shouldConstructArgument(MethodParameter param)
      Description copied from class: DataBinder
      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.

      Overrides:
      shouldConstructArgument in class DataBinder
    • bind

      public reactor.core.publisher.Mono<Void> bind(ServerWebExchange exchange)
      Bind query parameters, form data, or multipart form data to the binder target.
      Parameters:
      exchange - the current exchange
      Returns:
      a Mono<Void> that completes when binding is complete
    • getValuesToBind

      public reactor.core.publisher.Mono<Map<String,Object>> getValuesToBind(ServerWebExchange exchange)
      Obtain the values for data binding. By default, this delegates to extractValuesToBind(ServerWebExchange).
      Parameters:
      exchange - the current exchange
      Returns:
      a map of bind values
      Since:
      5.3
    • extractValuesToBind

      public static reactor.core.publisher.Mono<Map<String,Object>> extractValuesToBind(ServerWebExchange exchange)
      Combine query params and form data for multipart form data from the body of the request into a Map<String, Object> of values to use for data binding purposes.
      Parameters:
      exchange - the current exchange
      Returns:
      a Mono with the values to bind
      See Also:
    • addBindValue

      protected static void addBindValue(Map<String,Object> params, String key, List<?> values)