public class RequestResponseBodyMethodProcessor extends AbstractMessageConverterMethodProcessor
@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 @javax.validation.Valid
. In case of validation failure,
MethodArgumentNotValidException
is raised and results in an HTTP 400
response status code if DefaultHandlerExceptionResolver
is configured.
allSupportedMediaTypes, logger, messageConverters
Constructor and Description |
---|
RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters)
Basic constructor with converters only.
|
RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters,
org.springframework.web.accept.ContentNegotiationManager manager)
Basic constructor with converters and
ContentNegotiationManager . |
RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters,
org.springframework.web.accept.ContentNegotiationManager manager,
List<Object> requestResponseBodyAdvice)
Complete constructor for resolving
@RequestBody and handling
@ResponseBody . |
RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters,
List<Object> requestResponseBodyAdvice)
Complete constructor for resolving
@RequestBody method arguments. |
Modifier and Type | Method and Description |
---|---|
protected boolean |
checkRequired(org.springframework.core.MethodParameter parameter) |
void |
handleReturnValue(Object returnValue,
org.springframework.core.MethodParameter returnType,
org.springframework.web.method.support.ModelAndViewContainer mavContainer,
org.springframework.web.context.request.NativeWebRequest webRequest) |
protected <T> Object |
readWithMessageConverters(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.
|
Object |
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.
|
boolean |
supportsParameter(org.springframework.core.MethodParameter parameter) |
boolean |
supportsReturnType(org.springframework.core.MethodParameter returnType) |
createOutputMessage, getProducibleMediaTypes, getProducibleMediaTypes, getReturnValueType, isResourceType, writeWithMessageConverters, writeWithMessageConverters
adaptArgumentIfNecessary, createInputMessage, isBindExceptionRequired, readWithMessageConverters, validateIfApplicable
public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters)
@RequestBody
. For handling @ResponseBody
consider also
providing a ContentNegotiationManager
.public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager)
ContentNegotiationManager
.
Suitable for resolving @RequestBody
and handling
@ResponseBody
without Request~
or
ResponseBodyAdvice
.public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable List<Object> requestResponseBodyAdvice)
@RequestBody
method arguments.
For handling @ResponseBody
consider also providing a
ContentNegotiationManager
.public RequestResponseBodyMethodProcessor(List<org.springframework.http.converter.HttpMessageConverter<?>> converters, @Nullable org.springframework.web.accept.ContentNegotiationManager manager, @Nullable List<Object> requestResponseBodyAdvice)
@RequestBody
and handling
@ResponseBody
.public boolean supportsParameter(org.springframework.core.MethodParameter parameter)
public boolean supportsReturnType(org.springframework.core.MethodParameter returnType)
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
org.springframework.http.converter.HttpMessageNotReadableException
- if RequestBody.required()
is true
and there is no body content or if there is no suitable
converter to read the content with.Exception
protected <T> 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
AbstractMessageConverterMethodArgumentResolver
readWithMessageConverters
in class AbstractMessageConverterMethodArgumentResolver
T
- the expected type of the argument value to be createdwebRequest
- the current requestparameter
- the method parameter descriptor (may be null
)paramType
- the type of the argument value to be createdIOException
- if the reading from the request failsorg.springframework.web.HttpMediaTypeNotSupportedException
- if no suitable message converter is foundorg.springframework.http.converter.HttpMessageNotReadableException
protected boolean checkRequired(org.springframework.core.MethodParameter parameter)
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
IOException
org.springframework.web.HttpMediaTypeNotAcceptableException
org.springframework.http.converter.HttpMessageNotWritableException