spring mvc @responsebody返回json数据 ie浏览器弹出下载页面 解决方案

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");




转载于:https://my.oschina.net/ffy/blog/534810

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值