我已将jackson的jar添加到我项目的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响应。
答案 0 :(得分:0)
使用Spring版本3.2.2,无需注册任何自定义消息转换器
所以你的配置应该是这样的
<context:component-scan base-package="com.your.package.controller" />
<mvc:annotation-driven />
之后在POM文件中有这两个依赖项
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.2</version>
</dependency>
你也可以尝试添加一个application / json againt Accept header