Java spring mvc-@ResponseBody和基于浏览器的产品?
有没有简单的方法可以根据浏览器返回不同的内容类型 当涉及到application/json时,我正在用IE碰壁。大多数时候它是有效的,其他时候不是。 我希望总是返回json对象(通过MappingJacksonHttpMessageConverter),但在使用IE时将内容类型设置为text/plain 写入response.setContentType无效,因为我有很多控制器,扩展转换器也没有多大帮助,因为我没有请求头Java spring mvc-@ResponseBody和基于浏览器的产品?,java,spring,spring-mvc,Java,Spring,Spring Mvc,有没有简单的方法可以根据浏览器返回不同的内容类型 当涉及到application/json时,我正在用IE碰壁。大多数时候它是有效的,其他时候不是。 我希望总是返回json对象(通过MappingJacksonHttpMessageConverter),但在使用IE时将内容类型设置为text/plain 写入response.setContentType无效,因为我有很多控制器,扩展转换器也没有多大帮助,因为我没有请求头 有什么想法吗 您可以尝试使用@RequestHeader(“用户代理”)从
有什么想法吗 您可以尝试使用
@RequestHeader(“用户代理”)
从HTTP请求中获取用户代理
头,然后将内容类型设置为HttpServletResponse
对象,该对象将由Spring framework自动设置。这是一个例子
@Controller
public class FoobarController {
@RequestMapping("/path")
@ResponseBody
public String getContent(@RequestHeader("User-Agent") String userAgent,
HttpServletResponse response) {
if (isIE(userAgent)) {
response.setContentType("text/plain");
} else {
response.setContentType("text/json");
}
...
return "{\"key\":\"value\"}";
}
}
这是IE的部分用户代理头
- Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0;Trident/4.0)
- Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.0;Trident/4.0)
- Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;Trident/5.0)
您可以单击查看更多信息。ie处理应用程序/json很好。谢谢。我们最终做了类似的事情。扩展MappingJacksonHttpMessageConverter并在IE头上返回text/plain。到目前为止,已在生产中测试了2周,效果良好。