如何让MappingJacksonHttpMessageConverter设置内容长度

时间:2012-09-12 02:19:53

标签: java spring

我通过@ResponseBody从我的Spring控制器返回JSON数据。与此类似:

@RequestMapping("/api/someMethod.json")
public @ResponseBody MyClass someMethod(@RequestParam Long someVal, HttpServletRequest request) {
    return new MyClass(someVal);
}

MappingJacksonHttpMessageConverter始终为getContentLength()返回null,这会导致内容长度标头为-1。

我需要准确设置内容长度(在客户端解决一个单独的问题,我无法修复)。

让这个类计算生成的JSON的内容长度的最简单方法是什么,并在内容长度标题中设置它?

我不想编写自己的JSON生成器并返回json字符串,因为我有很多API方法需要这个“修复”。

提前致谢。

1 个答案:

答案 0 :(得分:0)

一般而言,您永远不必手动设置HTTP标头的内容长度。能够告诉服务存在比实际发送的数据更多或更少的数据将是非常危险的。似乎底层技术(在你的情况下是弹簧)应该实际上没有正确处理json转换。

也许MyClass对象没有正确转换为json,这就是为什么没有内容?