org.springframework.web.method.annotation
Class ExpressionValueMethodArgumentResolver

java.lang.Object
  extended by org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
      extended by org.springframework.web.method.annotation.ExpressionValueMethodArgumentResolver
All Implemented Interfaces:
HandlerMethodArgumentResolver

public class ExpressionValueMethodArgumentResolver
extends AbstractNamedValueMethodArgumentResolver

Resolves method arguments annotated with @Value.

An @Value does not have a name but gets resolved from the default value string, which may contain ${...} placeholder or Spring Expression Language #{...} expressions.

A WebDataBinder may be invoked to apply type conversion to resolved argument value.

Since:
3.1
Author:
Rossen Stoyanchev

Nested Class Summary
 
Nested classes/interfaces inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
 
Constructor Summary
ExpressionValueMethodArgumentResolver(ConfigurableBeanFactory beanFactory)
           
 
Method Summary
protected  AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
          Create the AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter.
protected  void handleMissingValue(String name, MethodParameter parameter)
          Invoked when a named value is required, but AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest) returned null and there is no default value.
protected  Object resolveName(String name, MethodParameter parameter, NativeWebRequest webRequest)
          Resolves the given parameter type and value name into an argument value.
 boolean supportsParameter(MethodParameter parameter)
          Whether the given method parameter is supported by this resolver.
 
Methods inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
handleResolvedValue, resolveArgument
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExpressionValueMethodArgumentResolver

public ExpressionValueMethodArgumentResolver(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

supportsParameter

public boolean supportsParameter(MethodParameter parameter)
Description copied from interface: HandlerMethodArgumentResolver
Whether the given method parameter is supported by this resolver.

Parameters:
parameter - the method parameter to check
Returns:
true if this resolver supports the supplied parameter; false otherwise

createNamedValueInfo

protected AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(MethodParameter parameter)
Description copied from class: AbstractNamedValueMethodArgumentResolver
Create the AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter. Implementations typically retrieve the method annotation by means of MethodParameter.getParameterAnnotation(Class).

Specified by:
createNamedValueInfo in class AbstractNamedValueMethodArgumentResolver
Parameters:
parameter - the method parameter
Returns:
the named value information

resolveName

protected Object resolveName(String name,
                             MethodParameter parameter,
                             NativeWebRequest webRequest)
                      throws Exception
Description copied from class: AbstractNamedValueMethodArgumentResolver
Resolves the given parameter type and value name into an argument value.

Specified by:
resolveName in class AbstractNamedValueMethodArgumentResolver
Parameters:
name - the name of the value being resolved
parameter - the method parameter to resolve to an argument value
webRequest - the current request
Returns:
the resolved argument. May be null
Throws:
Exception - in case of errors

handleMissingValue

protected void handleMissingValue(String name,
                                  MethodParameter parameter)
                           throws ServletException
Description copied from class: AbstractNamedValueMethodArgumentResolver
Invoked when a named value is required, but AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest) returned null and there is no default value. Subclasses typically throw an exception in this case.

Specified by:
handleMissingValue in class AbstractNamedValueMethodArgumentResolver
Parameters:
name - the name for the value
parameter - the method parameter
Throws:
ServletException