Class ModelAttributeMethodArgumentResolver

java.lang.Object
org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver
All Implemented Interfaces:
HandlerMethodArgumentResolver

public class ModelAttributeMethodArgumentResolver extends HandlerMethodArgumentResolverSupport
Resolve @ModelAttribute annotated method arguments.

Model attributes are sourced from the model, or created using a default constructor and then added to the model. Once created the attribute is populated via data binding to the request (form data, query params). Validation also may be applied if the argument is annotated with @jakarta.validation.Valid or Spring's own @org.springframework.validation.annotation.Validated.

When this handler is created with useDefaultResolution=true any non-simple type argument and return value is regarded as a model attribute with or without the presence of an @ModelAttribute.

Since:
5.0
Author:
Rossen Stoyanchev, Juergen Hoeller, Sam Brannen
  • Constructor Details

    • ModelAttributeMethodArgumentResolver

      public ModelAttributeMethodArgumentResolver(ReactiveAdapterRegistry adapterRegistry, boolean useDefaultResolution)
      Class constructor with a default resolution mode flag.
      Parameters:
      adapterRegistry - for adapting to other reactive types from and to Mono
      useDefaultResolution - if "true", non-simple method arguments and return values are considered model attributes with or without a @ModelAttribute annotation present.
  • Method Details

    • supportsParameter

      public boolean supportsParameter(MethodParameter parameter)
      Description copied from interface: HandlerMethodArgumentResolver
      Whether this resolver supports the given method parameter.
      Parameters:
      parameter - the method parameter
    • resolveArgument

      public reactor.core.publisher.Mono<Object> resolveArgument(MethodParameter parameter, BindingContext context, ServerWebExchange exchange)
      Description copied from interface: HandlerMethodArgumentResolver
      Resolve the value for the method parameter.
      Parameters:
      parameter - the method parameter
      context - the binding context to use
      exchange - the current exchange
      Returns:
      Mono for the argument value, possibly empty
    • constructAttribute

      protected reactor.core.publisher.Mono<Void> constructAttribute(WebExchangeDataBinder binder, ServerWebExchange exchange)
      Extension point to create the attribute, binding the request to constructor args.
      Parameters:
      binder - the data binder instance to use for the binding
      exchange - the current exchange
      Since:
      6.1
    • bindRequestParameters

      protected reactor.core.publisher.Mono<Void> bindRequestParameters(WebExchangeDataBinder binder, ServerWebExchange exchange)
      Extension point to bind the request to the target object.
      Parameters:
      binder - the data binder instance to use for the binding
      exchange - the current request
      Since:
      5.2.6