IE浏览器老是厚着脸皮跟其他浏览器格格不入,偏偏很多人IE的版本也不升级,最苦逼的要数我们可爱的前端工程师l了,兼容性、布拉布拉一大堆事情。
很多人用springmvc放回json格式数据 使用@ResponseBody标签,在IE下总是出现下载提示,很多解决方案是在配置文件中加上
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
试过之后发现是不是发现并没有什么卵用,
为了兼容的IE,只有放弃@ResponseBody标签了,毕竟用户至上;
我的解决方案,直接上代码:
**
* web层使用的Json结果集
* User: Alec
* Date: 12-6-1
* Time: 上午9:46
*/
public class JsonResult extends HashMap<String, Object> {
/**
* 以成功标志来构造
*
* @param success
*/
public JsonResult(boolean success) {
this.put("success", success);
this.put("msg", "");
}
/**
* 以消息来构造
*
* @param msg
*/
public JsonResult(String msg) {
this.put("success", false);
this.put("msg", msg);
}
/**
* 以成功标志和消息来构造
*
* @param success
* @param msg
*/
public JsonResult(boolean success, String msg) {
this.put("success", success);
this.put("msg", msg);
}
public JsonResult addData(String name, Object value) {
this.put(name, value);
return this;
}
public String toJson() {
return JsonUtil.objectToJson(this);
}
/**
* 直接写入客户端
*
* @param response
* @throws java.io.IOException
*/
public void toJson(HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(toJson());
}
public static void main(String[] args) {
System.out.println(new JsonResult(false).addData("list", Lists.newArrayList("a", "b", "c")).toJson());
}
}
可以直接:new JsonResult(false, "").addData("list", Lists.newArrayList("a", "b", "c")).toJson(response);
return;
主要就是这段代码解决了问题:
response.setContentType("text/html;charset=UTF-8");