Class ModelAttributeMethodArgumentResolver
java.lang.Object
org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
org.springframework.web.reactive.result.method.annotation.ModelAttributeMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver
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
-
Field Summary
Fields inherited from class org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
logger
-
Constructor Summary
ConstructorDescriptionModelAttributeMethodArgumentResolver
(ReactiveAdapterRegistry adapterRegistry, boolean useDefaultResolution) Class constructor with a default resolution mode flag. -
Method Summary
Modifier and TypeMethodDescriptionprotected reactor.core.publisher.Mono<Void>
bindRequestParameters
(WebExchangeDataBinder binder, ServerWebExchange exchange) Extension point to bind the request to the target object.protected reactor.core.publisher.Mono<Void>
constructAttribute
(WebExchangeDataBinder binder, ServerWebExchange exchange) Extension point to create the attribute, binding the request to constructor args.reactor.core.publisher.Mono<Object>
resolveArgument
(MethodParameter parameter, BindingContext context, ServerWebExchange exchange) Resolve the value for the method parameter.boolean
supportsParameter
(MethodParameter parameter) Whether this resolver supports the given method parameter.Methods inherited from class org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
checkAnnotatedParamNoReactiveWrapper, checkParameterType, checkParameterTypeNoReactiveWrapper, getAdapterRegistry
-
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 MonouseDefaultResolution
- if "true", non-simple method arguments and return values are considered model attributes with or without a@ModelAttribute
annotation present.
-
-
Method Details
-
supportsParameter
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 parametercontext
- the binding context to useexchange
- 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 bindingexchange
- 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 bindingexchange
- the current request- Since:
- 5.2.6
-