selectedMediaType=selectedMediaType.removeQualityValue();for(HttpMessageConverter<?>messageConverter ://遍历所有已注册的HttpMessageConverter,选出一个支持返回值类型returnValueClass和//selectedMediaType的HttpMessageConverter来进行写入数据到response的body中。this.messageConverters) {if(messageConverter.canWrite(ret...
writeWithMessageConverters(returnValue, returnType, webRequest); } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 方法writeWithMessageConverters的具体内容为: protected <T> void writeWithMessageConverters(T returnValue, MethodParameter returnType, ServletServerHttpRequest inputMessage, ServletServerHttpRespons...
代码路径:package org.springframework.web.servlet.mvc.method.annotation; RequestMappingHandlerAdapter中有个属性messageConverters。messageConverters主要提供的类型转换功能, 在3.2.5中默认只添加了如下几种 1publicRequestMappingHandlerAdapter() {23StringHttpMessageConverter stringHttpMessageConverter =newStringHttpMessage...
writeWithMessageConverters(returnValue,returnType,inputMessage,outputMessage); } 1. 2. 3. 4. 5. 6. 7. 接下来就是通过职责链模式选择HttpMessageConverter的实现类来进行数据转换操作。 @SuppressWarnings("unchecked") protected<T>voidwriteWithMessageConverters(TreturnValue,MethodParameterreturnType, ServletSer...
您可以使用MVC Config的 Message Converters选项来配置或自定义消息转换。 您可以将@RequestBody与javax.validation.Valid结合使用,或者使用Spring的@Validated注解,这两种注解都会应用Standard Bean Validation验证。默认情况下,验证错误会导致MethodArgumentNotValidException,该异常会转换为400(BAD_REQUEST)响应。或者,您可以通...
SpringMVC在启动时会自动配置一些默认的HttpMessageConverter转换器,在 WebMvcConfigurationSupport 类中添加了缺省的MessageConverter,比如MappingJackson2HttpMessageConverter,StringHttpMessageConverter等。 protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters) { StringHttpMess...
阅读文档发现Spring提供了基于<mvc:annotation-driven />自定义messageConverters的方法,如下所示: [html]view plaincopy
1.如果 mvc:annotation-driven节点有子节点message-converters,那么它的转换器属性messageConverters也由这些子节点组成。 message-converters的子节点配置如下: <mvc:annotation-driven><mvc:message-converters><beanclass="org.example.MyHttpMessageConverter"/><beanclass="org.example.MyOtherHttpMessageConverter"/></...
*/···for(HttpMessageConverter<?>messageConverter:this.messageConverters){···if(messageConverter.canWrite(valueType,selectedMediaType)){···((HttpMessageConverter)messageConverter).write(outputValue,selectedMediaType,outputMessage);···}} ...
1.如果<mvc:annotation-driven>节点有子节点message-converters,那么它的转换器属性messageConverters也由这些子节点组成。 message-converters的子节点配置如下: <mvc:annotation-driven><mvc:message-converters><beanclass="org.example.MyHttpMessageConverter"/><beanclass="org.example.MyOtherHttpMessageConverter"/><...