org.springframework.web.servlet.mvc.method.annotation

## Class ServletInvocableHandlerMethod

- java.lang.Object
- - org.springframework.web.method.HandlerMethod
  - - org.springframework.web.method.support.InvocableHandlerMethod
    - - org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod

    public class ServletInvocableHandlerMethod
    extends InvocableHandlerMethod

Extends `InvocableHandlerMethod` with the ability to handle return values through a registered `HandlerMethodReturnValueHandler` and also supports setting the response status based on a method-level `@ResponseStatus` annotation.

A `null` return value (including void) may be interpreted as the end of request processing in combination with a `@ResponseStatus` annotation, a not-modified check condition (see `ServletWebRequest.checkNotModified(long)`), or a method argument that provides access to the response stream.

Since:
  3.1
Author:
  Rossen Stoyanchev

### Field Summary

### Fields inherited from class org.springframework.web.method.HandlerMethod

`logger`

### Constructor Summary

Constructors
Constructor and Description
`ServletInvocableHandlerMethod(HandlerMethod handlerMethod)` Create an instance from a `HandlerMethod`.
`ServletInvocableHandlerMethod(Object handler, Method method)` Creates an instance from the given handler and method.

### Method Summary

Methods
`void` `invokeAndHandle(ServletWebRequest webRequest, ModelAndViewContainer mavContainer, Object... providedArgs)` Invokes the method and handles the return value through a registered `HandlerMethodReturnValueHandler`.
`void` `setHandlerMethodReturnValueHandlers(HandlerMethodReturnValueHandlerComposite returnValueHandlers)` Register `HandlerMethodReturnValueHandler` instances to use to handle return values.

### Methods inherited from class org.springframework.web.method.support.InvocableHandlerMethod

`getDetailedErrorMessage, invokeForRequest, setDataBinderFactory, setHandlerMethodArgumentResolvers, setParameterNameDiscoverer`

### Methods inherited from class org.springframework.web.method.HandlerMethod

`createWithResolvedBean, equals, getBean, getBeanType, getBridgedMethod, getMethod, getMethodAnnotation, getMethodParameters, getReturnType, getReturnValueType, hashCode, isVoid, toString`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### ServletInvocableHandlerMethod

    public ServletInvocableHandlerMethod(Object handler,
                                 Method method)

Creates an instance from the given handler and method.

#### ServletInvocableHandlerMethod

    public ServletInvocableHandlerMethod(HandlerMethod handlerMethod)

Create an instance from a `HandlerMethod`.

### Method Detail

#### setHandlerMethodReturnValueHandlers

    public void setHandlerMethodReturnValueHandlers(HandlerMethodReturnValueHandlerComposite returnValueHandlers)

Register `HandlerMethodReturnValueHandler` instances to use to handle return values.

#### invokeAndHandle

    public final void invokeAndHandle(ServletWebRequest webRequest,
                       ModelAndViewContainer mavContainer,
                       Object... providedArgs)
                               throws Exception

Invokes the method and handles the return value through a registered `HandlerMethodReturnValueHandler`.

Parameters:
  `webRequest` - the current request
  `mavContainer` - the ModelAndViewContainer for this request
  `providedArgs` - "given" arguments matched by type, not resolved
Throws:
  `Exception`