导出Excel用GET方式需要传入的条件过长时,只能用POSt方式

我们在导出Excel时必须用GET方式、当需要传入的条件过长时,只能用POSt方式
控制层

1、定义一个常量KEY并赋值
    private static final String  KEY ="exportExcelcondition";
 2、Ajax的GET方式无法传入太长的参数,只能用POST方式,将前端Ajax通过POST方式传过来的数据放入session并赋值给KEY
      @PostMapping("/export")
    public @ResponseBody Object export(@RequestBody Map conditions, HttpSession session) {
        session.setAttribute(KEY,conditions);
        return 1;
    }
 3、执行查询功能,session 从session中获取已存入的KEY值并赋值给条件
 @GetMapping("/export2")
    public void exprotExcel(HttpServletResponse rep, HttpSession session){
        Map conditions = (Map) session.getAttribute(KEY);
        optService.export(conditions,rep);
    }

JSP页面(params为条件)

 /****************************************************** 导出Excel ******************************************************/
$("#exportBtn").click(function () {
        if (params) {
            $.ajax({
                url: 'export.html',
                type: 'post',
                dataType: 'json',
                async: false,
                data: JSON.stringify(params),
                contentType: 'application/json;charset=utf-8',
                success: function (data) {
//                    console.log(data)
                    $("#exportExcle9").remove();
                    $("body").append("")
                }
            });
        }else {
            layer.msg("请先查询数据!");
        }
    });

你可能感兴趣的:(java,前端)