spring-web

org.springframework.web.method.annotation
Class RequestHeaderMethodArgumentResolver

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

public class RequestHeaderMethodArgumentResolver
extends AbstractNamedValueMethodArgumentResolver

Resolves method arguments annotated with @RequestHeader except for Map arguments. See RequestHeaderMapMethodArgumentResolver for details on Map arguments annotated with @RequestHeader.

An @RequestHeader is a named value resolved from a request header. It has a required flag and a default value to fall back on when the request header does not exist.

A WebDataBinder is invoked to apply type conversion to resolved request header values that don't yet match the method parameter type.

Since:
3.1
Author:
Arjen Poutsma, Rossen Stoyanchev

Nested Class Summary
 
Nested classes/interfaces inherited from class org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
AbstractNamedValueMethodArgumentResolver.NamedValueInfo
 
Constructor Summary
RequestHeaderMethodArgumentResolver(org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory)
           
 
Method Summary
protected  AbstractNamedValueMethodArgumentResolver.NamedValueInfo createNamedValueInfo(org.springframework.core.MethodParameter parameter)
          Create the AbstractNamedValueMethodArgumentResolver.NamedValueInfo object for the given method parameter.
protected  void handleMissingValue(java.lang.String headerName, org.springframework.core.MethodParameter param)
          Invoked when a named value is required, but AbstractNamedValueMethodArgumentResolver.resolveName(String, MethodParameter, NativeWebRequest) returned null and there is no default value.
protected  java.lang.Object resolveName(java.lang.String name, org.springframework.core.MethodParameter parameter, NativeWebRequest request)
          Resolves the given parameter type and value name into an argument value.
 boolean supportsParameter(org.springframework.core.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

RequestHeaderMethodArgumentResolver

public RequestHeaderMethodArgumentResolver(org.springframework.beans.factory.config.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 have expressions
Method Detail

supportsParameter

public boolean supportsParameter(org.springframework.core.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(org.springframework.core.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 java.lang.Object resolveName(java.lang.String name,
                                       org.springframework.core.MethodParameter parameter,
                                       NativeWebRequest request)
                                throws java.lang.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
request - the current request
Returns:
the resolved argument. May be null
Throws:
java.lang.Exception - in case of errors

handleMissingValue

protected void handleMissingValue(java.lang.String headerName,
                                  org.springframework.core.MethodParameter param)
                           throws ServletRequestBindingException
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:
headerName - the name for the value
param - the method parameter
Throws:
ServletRequestBindingException

spring-web