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
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HandlerMethodReturnValueHandlerComposite()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.