Class PathVariableMethodArgumentResolver
- java.lang.Object
- org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
- org.springframework.web.reactive.result.method.annotation.AbstractNamedValueArgumentResolver
- org.springframework.web.reactive.result.method.annotation.AbstractNamedValueSyncArgumentResolver
- org.springframework.web.reactive.result.method.annotation.PathVariableMethodArgumentResolver
- All Implemented Interfaces:
HandlerMethodArgumentResolver
,SyncHandlerMethodArgumentResolver
public class PathVariableMethodArgumentResolver extends AbstractNamedValueSyncArgumentResolver
Resolves method arguments annotated with @PathVariable
.An @
PathVariable
is a named value that gets resolved from a URI template variable. It is always required and does not have a default value to fall back on. See the base classAbstractNamedValueMethodArgumentResolver
for more information on how named values are processed.If the method parameter type is
Map
, the name specified in the annotation is used to resolve the URI variable String value. The value is then converted to aMap
via type conversion, assuming a suitableConverter
.- Since:
- 5.0
- Author:
- Rossen Stoyanchev, Juergen Hoeller
- See Also:
PathVariableMapMethodArgumentResolver
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.web.reactive.result.method.annotation.AbstractNamedValueArgumentResolver
AbstractNamedValueArgumentResolver.NamedValueInfo
Field Summary
Fields inherited from class org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
logger
Constructor Summary
Constructors Constructor Description PathVariableMethodArgumentResolver(ConfigurableBeanFactory factory, ReactiveAdapterRegistry registry)
Create a newPathVariableMethodArgumentResolver
.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected AbstractNamedValueArgumentResolver.NamedValueInfo
createNamedValueInfo(MethodParameter parameter)
Create theAbstractNamedValueArgumentResolver.NamedValueInfo
object for the given method parameter.protected void
handleMissingValue(String name, MethodParameter parameter)
Invoked when a named value is required, butAbstractNamedValueArgumentResolver.resolveName(String, MethodParameter, ServerWebExchange)
returnednull
and there is no default value.protected void
handleResolvedValue(Object arg, String name, MethodParameter parameter, Model model, ServerWebExchange exchange)
Invoked after a value is resolved.protected Object
resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange)
Actually resolve the value synchronously.boolean
supportsParameter(MethodParameter parameter)
Whether this resolver supports the given method parameter.Methods inherited from class org.springframework.web.reactive.result.method.annotation.AbstractNamedValueSyncArgumentResolver
resolveArgument, resolveArgumentValue, resolveName
Methods inherited from class org.springframework.web.reactive.result.method.annotation.AbstractNamedValueArgumentResolver
handleMissingValue
Methods inherited from class org.springframework.web.reactive.result.method.HandlerMethodArgumentResolverSupport
checkAnnotatedParamNoReactiveWrapper, checkParameterType, checkParameterTypeNoReactiveWrapper, getAdapterRegistry
Constructor Detail
PathVariableMethodArgumentResolver
public PathVariableMethodArgumentResolver(@Nullable ConfigurableBeanFactory factory, ReactiveAdapterRegistry registry)
Create a newPathVariableMethodArgumentResolver
.- Parameters:
factory
- a bean factory to use for resolving${...}
placeholder and#{...}
SpEL expressions in default values; ornull
if default values are not expected to contain expressionsregistry
- for checking reactive type wrappers
Method Detail
supportsParameter
public boolean supportsParameter(MethodParameter parameter)
Description copied from interface:HandlerMethodArgumentResolver
Whether this resolver supports the given method parameter.- Parameters:
parameter
- the method parameter
createNamedValueInfo
protected AbstractNamedValueArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
Description copied from class:AbstractNamedValueArgumentResolver
Create theAbstractNamedValueArgumentResolver.NamedValueInfo
object for the given method parameter. Implementations typically retrieve the method annotation by means ofMethodParameter.getParameterAnnotation(Class)
.- Specified by:
createNamedValueInfo
in classAbstractNamedValueArgumentResolver
- Parameters:
parameter
- the method parameter- Returns:
- the named value information
resolveNamedValue
protected Object resolveNamedValue(String name, MethodParameter parameter, ServerWebExchange exchange)
Description copied from class:AbstractNamedValueSyncArgumentResolver
Actually resolve the value synchronously.- Specified by:
resolveNamedValue
in classAbstractNamedValueSyncArgumentResolver
handleMissingValue
protected void handleMissingValue(String name, MethodParameter parameter)
Description copied from class:AbstractNamedValueArgumentResolver
Invoked when a named value is required, butAbstractNamedValueArgumentResolver.resolveName(String, MethodParameter, ServerWebExchange)
returnednull
and there is no default value. Subclasses typically throw an exception in this case.- Overrides:
handleMissingValue
in classAbstractNamedValueArgumentResolver
- Parameters:
name
- the name for the valueparameter
- the method parameter
handleResolvedValue
protected void handleResolvedValue(@Nullable Object arg, String name, MethodParameter parameter, Model model, ServerWebExchange exchange)
Description copied from class:AbstractNamedValueArgumentResolver
Invoked after a value is resolved.- Overrides:
handleResolvedValue
in classAbstractNamedValueArgumentResolver
- Parameters:
arg
- the resolved argument valuename
- the argument nameparameter
- the argument parameter typemodel
- the modelexchange
- the current exchange