【发布时间】:2014-09-10 20:27:04
【问题描述】:
我已将我的休息服务的异常处理集中到一个简洁的 ControllerAdvice 中。
我正在返回常规传输对象,希望我很酷的 mapping-jackson-converter 将其转换为最终客户端的 JSON。
现在是这样。如果我没有将 accept-header 设置为“Application/JSON”,我不会得到转换后的 JSON,而是在我的测试中得到一些默认的 HTML,这似乎是由 Jetty 生成的。我不得不承认我不确定为什么,但我想这是一些默认的 Spring 解析器生效。
这让我开始思考。调用我的 rest URL 的客户应该知道我返回 JSON,所以我希望我的服务始终返回 json。
有没有办法将 ReqeustMappingHandlerAdapter 配置为始终生成 JSON?
我当前的配置:
<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<beans:ref bean="jsonConverter"/>
</beans:list>
</beans:property>
</beans:bean>
<!-- Instantiation of the converter in order to configure it -->
<beans:bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<!--beans:property name="supportedMediaTypes" value="application/json"/-->
</beans:bean>
【问题讨论】:
-
你能发布你的方法异常处理程序定义吗?
-
我只有一个@controlleradvice 类,就像这个例子中的petrikainulainen.net/programming/spring-framework/…
-
你的方法有@ResponseBody注解吗?
-
确实如此。正如我所提到的,如果我将接受标头设置为 json,它会起作用,如果我删除它,它会默认为一些生成的 HTML。我希望它始终只生成 JSON。
标签: json spring rest spring-mvc