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

Class JsonViewRequestBodyAdvice

  • All Implemented Interfaces:
    RequestBodyAdvice


    public class JsonViewRequestBodyAdvice
    extends RequestBodyAdviceAdapter
    A RequestBodyAdvice implementation that adds support for Jackson's @JsonView annotation declared on a Spring MVC @HttpEntity or @RequestBody method parameter.

    The deserialization view specified in the annotation will be passed in to the MappingJackson2HttpMessageConverter which will then use it to deserialize the request body with.

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

    Since:
    4.2
    Author:
    Sebastien Deleuze
    See Also:
    JsonView, ObjectMapper.readerWithView(Class)
    • Constructor Detail

      • JsonViewRequestBodyAdvice

        public JsonViewRequestBodyAdvice()
    • Method Detail

      • supports

        public boolean supports(MethodParameter methodParameter,
                                java.lang.reflect.Type targetType,
                                java.lang.Class<? extends HttpMessageConverter<?>> converterType)
        Description copied from interface: RequestBodyAdvice
        Invoked first to determine if this interceptor applies.
        Parameters:
        methodParameter - the method parameter
        targetType - the target type, not necessarily the same as the method parameter type, e.g. for HttpEntity<String>.
        converterType - the selected converter type
        Returns:
        whether this interceptor should be invoked or not
      • beforeBodyRead

        public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage,
                                               MethodParameter methodParameter,
                                               java.lang.reflect.Type targetType,
                                               java.lang.Class<? extends HttpMessageConverter<?>> selectedConverterType)
                                        throws java.io.IOException
        Description copied from class: RequestBodyAdviceAdapter
        The default implementation returns the InputMessage that was passed in.
        Specified by:
        beforeBodyRead in interface RequestBodyAdvice
        Overrides:
        beforeBodyRead in class RequestBodyAdviceAdapter
        Parameters:
        inputMessage - the request
        methodParameter - the target method parameter
        targetType - the target type, not necessarily the same as the method parameter type, e.g. for HttpEntity<String>.
        selectedConverterType - the converter used to deserialize the body
        Returns:
        the input request or a new instance, never null
        Throws:
        java.io.IOException