Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.web.method.annotation
Class AbstractNamedValueMethodArgumentResolver

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

All Implemented Interfaces:
  HandlerMethodArgumentResolver

Direct Known Subclasses:
  AbstractCookieValueMethodArgumentResolver, ExpressionValueMethodArgumentResolver, PathVariableMethodArgumentResolver, RequestHeaderMethodArgumentResolver, RequestParamMethodArgumentResolver

    public abstract class AbstractNamedValueMethodArgumentResolver

extends Object
implements HandlerMethodArgumentResolver

Abstract base class for resolving method arguments from a named value. Request parameters, request headers, and path variables are examples of named values. Each may have a name, a required flag, and a default value.

Subclasses define how to do the following:

- Obtain named value information for a method parameter
- Resolve names into argument values
- Handle missing argument values when argument values are required
- Optionally handle a resolved value

A default value string can contain ${...} placeholders and Spring Expression Language #{...} expressions. For this to work a `ConfigurableBeanFactory` must be supplied to the class constructor.

A `WebDataBinder` is created to apply type conversion to the resolved argument value if it doesn't match the method parameter type.

Since:
  3.1
Author:
  Arjen Poutsma, Rossen Stoyanchev

Nested Class Summary
`protected static class` | `AbstractNamedValueMethodArgumentResolver.NamedValueInfo` Represents the information about a named value, including name, whether it's required and a default value.

Constructor Summary
`AbstractNamedValueMethodArgumentResolver(ConfigurableBeanFactory beanFactory)`

Method Summary
`protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo` | `createNamedValueInfo(MethodParameter parameter)` Create the `AbstractNamedValueMethodArgumentResolver.NamedValueInfo` object for the given method parameter.
`protected abstract void` | `handleMissingValue(String name, MethodParameter parameter)` Invoked when a named value is required, but `resolveName(String, MethodParameter, NativeWebRequest)` returned `null` and there is no default value.
`protected void` | `handleResolvedValue(Object arg, String name, MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest)` Invoked after a value is resolved.
`Object` | `resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory)` Resolves a method parameter into an argument value from a given request.
`protected abstract Object` | `resolveName(String name, MethodParameter parameter, NativeWebRequest request)` Resolves the given parameter type and value name into an argument value.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.springframework.web.method.support.HandlerMethodArgumentResolver
`supportsParameter`

Constructor Detail

### AbstractNamedValueMethodArgumentResolver

    public AbstractNamedValueMethodArgumentResolver(ConfigurableBeanFactory beanFactory)

Parameters:
  `beanFactory` - a bean factory to use for resolving ${...} placeholder and #{...} SpEL expressions in default values, or `null` if default values are not expected to contain expressions

Method Detail

### resolveArgument

    public final Object resolveArgument(MethodParameter parameter,
                                        ModelAndViewContainer mavContainer,
                                        NativeWebRequest webRequest,
                                        WebDataBinderFactory binderFactory)
                                 throws Exception

  Description copied from interface: `HandlerMethodArgumentResolver`
  Resolves a method parameter into an argument value from a given request. A `ModelAndViewContainer` provides access to the model for the request. A `WebDataBinderFactory` provides a way to create a `WebDataBinder` instance when needed for data binding and type conversion purposes.

  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)` and it 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`.
  Throws:
    `Exception` - in case of errors with the preparation of argument values

### createNamedValueInfo

    protected abstract AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)

  Create the `AbstractNamedValueMethodArgumentResolver.NamedValueInfo` object for the given method parameter. Implementations typically retrieve the method annotation by means of `MethodParameter.getParameterAnnotation(Class)`.

  Parameters:
    `parameter` - the method parameter
  Returns:
    the named value information

### resolveName

    protected abstract Object resolveName(String name,
                                          MethodParameter parameter,
                                          NativeWebRequest request)
                                   throws Exception

  Resolves the given parameter type and value name into an argument value.

  Parameters:
    `name` - the name of the value being resolved
    `parameter` - the method parameter to resolve to an argument value
    `request` - the current request
  Returns:
    the resolved argument. May be `null`
  Throws:
    `Exception` - in case of errors

### handleMissingValue

    protected abstract void handleMissingValue(String name,
                                               MethodParameter parameter)
                                        throws ServletException

  Invoked when a named value is required, but `resolveName(String, MethodParameter, NativeWebRequest)` returned `null` and there is no default value. Subclasses typically throw an exception in this case.

  Parameters:
    `name` - the name for the value
    `parameter` - the method parameter
  Throws:
    `ServletException`

### handleResolvedValue

    protected void handleResolvedValue(Object arg,
                                       String name,
                                       MethodParameter parameter,
                                       ModelAndViewContainer mavContainer,
                                       NativeWebRequest webRequest)

  Invoked after a value is resolved.

  Parameters:
    `arg` - the resolved argument value
    `name` - the argument name
    `parameter` - the argument parameter type
    `mavContainer` - the `ModelAndViewContainer`, which may be `null`
    `webRequest` - the current request

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD