Spring json 406状态

时间:2014-07-17 07:07:16

标签: java json spring spring-mvc

我已将jackson的jar添加到我项目的lib目录jackson-core-asljackson-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响应。

注意 在您将帖子标记为重复之前,我会检查thisthis和{{3但它不起作用。

1 个答案:

答案 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