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

## Class JsonViewResponseBodyAdvice

- java.lang.Object
- - org.springframework.web.servlet.mvc.method.annotation.AbstractMappingJacksonResponseBodyAdvice
  - - org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice

- All Implemented Interfaces:
    ResponseBodyAdvice<Object>

      public class JsonViewResponseBodyAdvice
      extends AbstractMappingJacksonResponseBodyAdvice

  A `ResponseBodyAdvice` implementation that adds support for Jackson's `@JsonView` annotation declared on a Spring MVC `@RequestMapping` or `@ExceptionHandler` method.

  The serialization view specified in the annotation will be passed in to the `MappingJackson2HttpMessageConverter` which will then use it to serialize the response body.

  Note that despite `@JsonView` allowing for more than one class to be specified, the use for a response body advice is only supported with exactly one class argument. Consider the use of a composite interface.

  Since:
    4.1
  Author:
    Rossen Stoyanchev
  See Also:
    `JsonView`, `ObjectMapper.writerWithView(Class)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `JsonViewResponseBodyAdvice()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `beforeBodyWriteInternal(MappingJacksonValue bodyContainer, MediaType contentType, MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response)` Invoked only if the converter type is `MappingJackson2HttpMessageConverter`.
    `boolean` | `supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType)` Whether this component supports the given controller method return type and the selected `HttpMessageConverter` type.

    - ### Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMappingJacksonResponseBodyAdvice

      `beforeBodyWrite, getOrCreateContainer`

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

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

- - ### Constructor Detail

    - #### JsonViewResponseBodyAdvice

          public JsonViewResponseBodyAdvice()

  - ### Method Detail

    - #### supports

          public boolean supports(MethodParameter returnType,
                                  Class<? extends HttpMessageConverter<?>> converterType)

      Description copied from interface: `ResponseBodyAdvice`
      Whether this component supports the given controller method return type and the selected `HttpMessageConverter` type.
      Specified by:
        `supports` in interface `ResponseBodyAdvice<Object>`
      Overrides:
        `supports` in class `AbstractMappingJacksonResponseBodyAdvice`
      Parameters:
        `returnType` - the return type
        `converterType` - the selected converter type
      Returns:
        `true` if `ResponseBodyAdvice.beforeBodyWrite(T, org.springframework.core.MethodParameter, org.springframework.http.MediaType, java.lang.Class<? extends org.springframework.http.converter.HttpMessageConverter<?>>, org.springframework.http.server.ServerHttpRequest, org.springframework.http.server.ServerHttpResponse)` should be invoked; `false` otherwise

    - #### beforeBodyWriteInternal

          protected void beforeBodyWriteInternal(MappingJacksonValue bodyContainer,
                                                 MediaType contentType,
                                                 MethodParameter returnType,
                                                 ServerHttpRequest request,
                                                 ServerHttpResponse response)

      Description copied from class: `AbstractMappingJacksonResponseBodyAdvice`
      Invoked only if the converter type is `MappingJackson2HttpMessageConverter`.
      Specified by:
        `beforeBodyWriteInternal` in class `AbstractMappingJacksonResponseBodyAdvice`