Package org.springframework.web.method.annotation

# Class AbstractWebArgumentResolverAdapter

java.lang.Object
org.springframework.web.method.annotation.AbstractWebArgumentResolverAdapter

All Implemented Interfaces:
  `HandlerMethodArgumentResolver`

public abstract class AbstractWebArgumentResolverAdapter extends Object implements HandlerMethodArgumentResolver
An abstract base class adapting a `WebArgumentResolver` to the `HandlerMethodArgumentResolver` contract.

Note: This class is provided for backwards compatibility. However it is recommended to re-write a `WebArgumentResolver` as `HandlerMethodArgumentResolver`. Since `supportsParameter(org.springframework.core.MethodParameter)` can only be implemented by actually resolving the value and then checking the result is not `WebArgumentResolver#UNRESOLVED` any exceptions raised must be absorbed and ignored since it's not clear whether the adapter doesn't support the parameter or whether it failed for an internal reason. The `HandlerMethodArgumentResolver` contract also provides access to model attributes and to `WebDataBinderFactory` (for type conversion).

Since:
  3.1
Author:
  Arjen Poutsma, Rossen Stoyanchev

## Constructor Summary

Constructors
Constructor
Description
`AbstractWebArgumentResolverAdapter(WebArgumentResolver adaptee)`
Create a new instance.

## Method Summary

Modifier and Type
Method
Description
`protected abstract NativeWebRequest`
`getWebRequest()`
Required for access to NativeWebRequest in `supportsParameter(org.springframework.core.MethodParameter)`.
`Object`
`resolveArgument(org.springframework.core.MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory)`
Delegate to the `WebArgumentResolver` instance.
`boolean`
`supportsParameter(org.springframework.core.MethodParameter parameter)`
Actually resolve the value and check the resolved value is not `WebArgumentResolver.UNRESOLVED` absorbing _any_ exceptions.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### AbstractWebArgumentResolverAdapter

public AbstractWebArgumentResolverAdapter(WebArgumentResolver adaptee)
Create a new instance.

## Method Details

### supportsParameter

public boolean supportsParameter(org.springframework.core.MethodParameter parameter)
Actually resolve the value and check the resolved value is not `WebArgumentResolver.UNRESOLVED` absorbing _any_ exceptions.

Specified by:
  `supportsParameter` in interface `HandlerMethodArgumentResolver`
Parameters:
  `parameter` - the method parameter to check
Returns:
  `true` if this resolver supports the supplied parameter; `false` otherwise

### resolveArgument

@Nullable public Object resolveArgument(org.springframework.core.MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception
Delegate to the `WebArgumentResolver` instance.

Specified by:
  `resolveArgument` in interface `HandlerMethodArgumentResolver`
Parameters:
  `parameter` - the method parameter to resolve. This parameter must have previously been passed to `HandlerMethodArgumentResolver.supportsParameter(org.springframework.core.MethodParameter)` which must have returned `true`.
  `mavContainer` - the ModelAndViewContainer for the current request
  `webRequest` - the current request
  `binderFactory` - a factory for creating `WebDataBinder` instances
Returns:
  the resolved argument value, or `null` if not resolvable
Throws:
  `IllegalStateException` - if the resolved value is not assignable to the method parameter.
  `Exception` - in case of errors with the preparation of argument values

### getWebRequest

protected abstract NativeWebRequest getWebRequest()
Required for access to NativeWebRequest in `supportsParameter(org.springframework.core.MethodParameter)`.