Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring mvc-@ResponseBody和基于浏览器的产品?_Java_Spring_Spring Mvc - Fatal编程技术网

Java spring mvc-@ResponseBody和基于浏览器的产品?

Java spring mvc-@ResponseBody和基于浏览器的产品?,java,spring,spring-mvc,Java,Spring,Spring Mvc,有没有简单的方法可以根据浏览器返回不同的内容类型 当涉及到application/json时,我正在用IE碰壁。大多数时候它是有效的,其他时候不是。 我希望总是返回json对象(通过MappingJacksonHttpMessageConverter),但在使用IE时将内容类型设置为text/plain 写入response.setContentType无效,因为我有很多控制器,扩展转换器也没有多大帮助,因为我没有请求头 有什么想法吗 您可以尝试使用@RequestHeader(“用户代理”)从

有没有简单的方法可以根据浏览器返回不同的内容类型

当涉及到application/json时,我正在用IE碰壁。大多数时候它是有效的,其他时候不是。 我希望总是返回json对象(通过MappingJacksonHttpMessageConverter),但在使用IE时将内容类型设置为text/plain

写入response.setContentType无效,因为我有很多控制器,扩展转换器也没有多大帮助,因为我没有请求头


有什么想法吗

您可以尝试使用
@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周,效果良好。