org.springframework.web.method.support

## Class HandlerMethodReturnValueHandlerComposite

- java.lang.Object
- - org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite

All Implemented Interfaces:
  HandlerMethodReturnValueHandler

    public class HandlerMethodReturnValueHandlerComposite
    extends Object
    implements HandlerMethodReturnValueHandler

Handles method return values by delegating to a list of registered `HandlerMethodReturnValueHandler`s. Previously resolved return types are cached for faster lookups.

Since:
  3.1
Author:
  Rossen Stoyanchev

### Field Summary

Fields
`protected Log` `logger`

### Constructor Summary

Constructors
Constructor and Description
`HandlerMethodReturnValueHandlerComposite()`

### Method Summary

Methods
`HandlerMethodReturnValueHandlerComposite` `addHandler(HandlerMethodReturnValueHandler returnValuehandler)` Add the given `HandlerMethodReturnValueHandler`.
`HandlerMethodReturnValueHandlerComposite` `addHandlers(List<? extends HandlerMethodReturnValueHandler> returnValueHandlers)` Add the given `HandlerMethodReturnValueHandler`s.
`List<HandlerMethodReturnValueHandler>` `getHandlers()` Return a read-only list with the registered handlers, or an empty list.
`void` `handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest)` Iterate over registered `HandlerMethodReturnValueHandler`s and invoke the one that supports it.
`boolean` `supportsReturnType(MethodParameter returnType)` Whether the given method return type is supported by any registered `HandlerMethodReturnValueHandler`.

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

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

### Field Detail

#### logger

    protected final Log logger

### Constructor Detail

#### HandlerMethodReturnValueHandlerComposite

    public HandlerMethodReturnValueHandlerComposite()

### Method Detail

#### getHandlers

    public List<HandlerMethodReturnValueHandler> getHandlers()

Return a read-only list with the registered handlers, or an empty list.

#### supportsReturnType

    public boolean supportsReturnType(MethodParameter returnType)

Whether the given method return type is supported by any registered `HandlerMethodReturnValueHandler`.

Specified by:
  `supportsReturnType` in interface `HandlerMethodReturnValueHandler`
Parameters:
  `returnType` - the method return type to check
Returns:
  `true` if this handler supports the supplied return type; `false` otherwise

#### handleReturnValue

    public void handleReturnValue(Object returnValue,
                         MethodParameter returnType,
                         ModelAndViewContainer mavContainer,
                         NativeWebRequest webRequest)
                           throws Exception

Iterate over registered `HandlerMethodReturnValueHandler`s and invoke the one that supports it.

Specified by:
  `handleReturnValue` in interface `HandlerMethodReturnValueHandler`
Parameters:
  `returnValue` - the value returned from the handler method
  `returnType` - the type of the return value. This type must have previously been passed to `HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)` and it must have returned `true`
  `mavContainer` - the ModelAndViewContainer for the current request
  `webRequest` - the current request
Throws:
  `IllegalStateException` - if no suitable `HandlerMethodReturnValueHandler` is found.
  `Exception` - if the return value handling results in an error

#### addHandler

    public HandlerMethodReturnValueHandlerComposite addHandler(HandlerMethodReturnValueHandler returnValuehandler)

Add the given `HandlerMethodReturnValueHandler`.

#### addHandlers

    public HandlerMethodReturnValueHandlerComposite addHandlers(List<? extends HandlerMethodReturnValueHandler> returnValueHandlers)

Add the given `HandlerMethodReturnValueHandler`s.