【发布时间】:2014-07-17 07:07:15
【问题描述】:
我已将 jackson 的 jars 添加到我项目的 lib 目录 jackson-core-asl 和 jackson-mapper-asl。我还在 dispatcher-servlet.xml 中写了以下内容:
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
我的控制器是:
@Controller
public class SaleController {
@RequestMapping(value = "/sales/info", produces = "application/json", headers = "Accept=*/*")
public @ResponseBody Product getProductJson(@RequestParam String id) throws SQLException
{
ProductDAO mapping = new ProductDAOImpl();
Product product = mapping.getProductById(Integer.parseInt(id));
return product;
}
}
但是当我尝试在浏览器中获取此响应时,我仍然收到 406 HTTP status message 而不是 JSON 响应。
【问题讨论】:
-
首先检查您是否使用
Content-Type: application/json标头发送,然后从@RequestMapping中删除headers属性,看看是否可行。 -
您使用了请求映射中未定义的请求参数
id。 -
@Bart 如何使用 Content-Type: application/json 发送?
-
@DmitryFucintv 我的错。我看到你只回复 JSON :-) 不确定你使用的是哪个 Spring MVC 版本,但你通常不需要为 Jackson 声明消息转换器。春天会自己捡起来。尽可能使用 Jackson 2+。
标签: java json spring spring-mvc