Class RequestResponseBodyMethodProcessor
java.lang.Object
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor
- All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver,org.springframework.web.method.support.HandlerMethodReturnValueHandler
Resolves method arguments annotated with
@RequestBody and handles return
values from methods annotated with @ResponseBody by reading and writing
to the body of the request or response with an HttpMessageConverter.
An @RequestBody method argument is also validated if it is annotated
with any
annotations that trigger validation. In case of validation failure,
MethodArgumentNotValidException is raised and results in an HTTP 400
response status code if DefaultHandlerExceptionResolver is configured.
- Since:
- 3.1
- Author:
- Arjen Poutsma, Rossen Stoyanchev, Juergen Hoeller
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
AbstractMessageConverterMethodArgumentResolver.ConverterType -
Field Summary
Fields inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
logger, messageConverters -
Constructor Summary
ConstructorsConstructorDescriptionRequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters) Basic constructor with converters only.RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, List<Object> requestResponseBodyAdvice) Complete constructor for resolving@RequestBodymethod arguments.RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, org.springframework.web.accept.ContentNegotiationManager manager) Basic constructor with converters andContentNegotiationManager.RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, org.springframework.web.accept.ContentNegotiationManager manager, List<Object> requestResponseBodyAdvice) Variant ofRequestResponseBodyMethodProcessor(List, List)with an additionalContentNegotiationManagerargument, for return value handling.RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, org.springframework.web.accept.ContentNegotiationManager manager, List<Object> requestResponseBodyAdvice, List<org.springframework.web.ErrorResponse.Interceptor> interceptors) Variant ofRequestResponseBodyMethodProcessor(List, ContentNegotiationManager, List)with an additionalErrorResponse.Interceptorargument for return value handling. -
Method Summary
Modifier and TypeMethodDescriptionprotected booleancheckRequired(org.springframework.core.MethodParameter parameter) voidhandleReturnValue(Object returnValue, org.springframework.core.MethodParameter returnType, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest) protected ObjectreadWithMessageConverters(org.springframework.web.context.request.NativeWebRequest webRequest, org.springframework.core.MethodParameter parameter, Type paramType) Create the method argument value of the expected parameter type by reading from the given request.resolveArgument(org.springframework.core.MethodParameter parameter, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest, org.springframework.web.bind.support.WebDataBinderFactory binderFactory) Throws MethodArgumentNotValidException if validation fails.booleansupportsParameter(org.springframework.core.MethodParameter parameter) booleansupportsReturnType(org.springframework.core.MethodParameter returnType) Methods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor
createOutputMessage, getProducibleMediaTypes, getProducibleMediaTypes, getReturnValueType, invokeErrorResponseInterceptors, isResourceType, writeWithMessageConverters, writeWithMessageConvertersMethods inherited from class org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver
adaptArgumentIfNecessary, createInputMessage, getNestedTypeIfNeeded, getSupportedMediaTypes, isBindExceptionRequired, readWithMessageConverters, validateIfApplicable
-
Constructor Details
-
RequestResponseBodyMethodProcessor
public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters) Basic constructor with converters only. Suitable for resolving@RequestBody. For handling@ResponseBodyconsider also providing aContentNegotiationManager. -
RequestResponseBodyMethodProcessor
public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager) Basic constructor with converters andContentNegotiationManager. Suitable for resolving@RequestBodyand handling@ResponseBodywithoutRequest~orResponseBodyAdvice. -
RequestResponseBodyMethodProcessor
public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable List<Object> requestResponseBodyAdvice) Complete constructor for resolving@RequestBodymethod arguments. For handling@ResponseBodyconsider also providing aContentNegotiationManager.- Since:
- 4.2
-
RequestResponseBodyMethodProcessor
public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager, @Nullable List<Object> requestResponseBodyAdvice) Variant ofRequestResponseBodyMethodProcessor(List, List)with an additionalContentNegotiationManagerargument, for return value handling. -
RequestResponseBodyMethodProcessor
public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager, List<Object> requestResponseBodyAdvice, List<org.springframework.web.ErrorResponse.Interceptor> interceptors) Variant ofRequestResponseBodyMethodProcessor(List, ContentNegotiationManager, List)with an additionalErrorResponse.Interceptorargument for return value handling.- Since:
- 6.2
-
-
Method Details
-
supportsParameter
public boolean supportsParameter(org.springframework.core.MethodParameter parameter) -
supportsReturnType
public boolean supportsReturnType(org.springframework.core.MethodParameter returnType) -
resolveArgument
@Nullable public Object resolveArgument(org.springframework.core.MethodParameter parameter, @Nullable org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest, @Nullable org.springframework.web.bind.support.WebDataBinderFactory binderFactory) throws Exception Throws MethodArgumentNotValidException if validation fails.- Throws:
org.springframework.http.converter.HttpMessageNotReadableException- ifRequestBody.required()istrueand there is no body content or if there is no suitable converter to read the content with.Exception
-
readWithMessageConverters
@Nullable protected Object readWithMessageConverters(org.springframework.web.context.request.NativeWebRequest webRequest, org.springframework.core.MethodParameter parameter, Type paramType) throws IOException, org.springframework.web.HttpMediaTypeNotSupportedException, org.springframework.http.converter.HttpMessageNotReadableException Description copied from class:AbstractMessageConverterMethodArgumentResolverCreate the method argument value of the expected parameter type by reading from the given request.- Overrides:
readWithMessageConvertersin classAbstractMessageConverterMethodArgumentResolver- Parameters:
webRequest- the current requestparameter- the method parameter descriptor (may benull)paramType- the type of the argument value to be created- Returns:
- the created method argument value
- Throws:
IOException- if the reading from the request failsorg.springframework.web.HttpMediaTypeNotSupportedException- if no suitable message converter is foundorg.springframework.http.converter.HttpMessageNotReadableException
-
checkRequired
protected boolean checkRequired(org.springframework.core.MethodParameter parameter) -
handleReturnValue
public void handleReturnValue(@Nullable Object returnValue, org.springframework.core.MethodParameter returnType, org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest) throws IOException, org.springframework.web.HttpMediaTypeNotAcceptableException, org.springframework.http.converter.HttpMessageNotWritableException - Throws:
IOExceptionorg.springframework.web.HttpMediaTypeNotAcceptableExceptionorg.springframework.http.converter.HttpMessageNotWritableException
-