请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

jeesite

 找回密码
 注册新会员
查看: 1705|回复: 2

【jeesite之BUG修复系列】二、Excel导出所有数据失败

[复制链接]
来啊互相伤害啊 发表于 2016-12-20 12:37:13 | 显示全部楼层 |阅读模式
本帖最后由 来啊互相伤害啊 于 2016-12-24 22:48 编辑

【jeesite之BUG修复系列】二、Excel导出所有数据失败

在使用jeesite的excel导出的功能时候,遇到一个细小的BUG在这里给大家分享一下。
比如系统自带功能 用户管理模块 里面有一个导出功能。
  1.         /**
  2.          * 导出用户数据
  3.          * @param user
  4.          * @param request
  5.          * @param response
  6.          * @param redirectAttributes
  7.          * @return
  8.          */
  9.         @RequiresPermissions("sys:user:view")
  10.     @RequestMapping(value = "export", method=RequestMethod.POST)
  11.     public String exportFile(User user, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
  12.                 try {
  13.             String fileName = "用户数据"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
  14.             Page<User> page = systemService.findUser(new Page<User>(request, response, -1), user);
  15.                     new ExportExcel("用户数据", User.class).setDataList(page.getList()).write(response, fileName).dispose();
  16.                     return null;
  17.                 } catch (Exception e) {
  18.                         addMessage(redirectAttributes, "导出用户失败!失败信息:"+e.getMessage());
  19.                 }
  20.                 return "redirect:" + adminPath + "/sys/user/list?repage";
  21.     }
复制代码

在上面  new Page<User>(request, response, -1) 使用了 -1 作为参数
这个参数的意义是 不做分页处理
  1. /**
  2.          * 构造方法
  3.          * @param request 传递 repage 参数,来记住页码
  4.          * @param response 用于设置 Cookie,记住页码
  5.          * @param defaultPageSize 默认分页大小,如果传递 -1 则为不分页,返回所有数据
  6.          */
  7.         public Page(HttpServletRequest request, HttpServletResponse response, int defaultPageSize){
  8.                 // 设置页码参数(传递repage参数,来记住页码)
  9.                 String no = request.getParameter("pageNo");
  10.                 if (StringUtils.isNumeric(no)){
  11.                         CookieUtils.setCookie(response, "pageNo", no);
  12.                         this.setPageNo(Integer.parseInt(no));
  13.                 }else if (request.getParameter("repage")!=null){
  14.                         no = CookieUtils.getCookie(request, "pageNo");
  15.                         if (StringUtils.isNumeric(no)){
  16.                                 this.setPageNo(Integer.parseInt(no));
  17.                         }
  18.                 }
  19.                 // 设置页面大小参数(传递repage参数,来记住页码大小)
  20.                 String size = request.getParameter("pageSize");
  21.                 if (StringUtils.isNumeric(size)){
  22.                         CookieUtils.setCookie(response, "pageSize", size);
  23.                         this.setPageSize(Integer.parseInt(size));
  24.                 }else if (request.getParameter("repage")!=null){
  25.                         no = CookieUtils.getCookie(request, "pageSize");
  26.                         if (StringUtils.isNumeric(size)){
  27.                                 this.setPageSize(Integer.parseInt(size));
  28.                         }
  29.                 }else if (defaultPageSize != -2){
  30.                         this.pageSize = defaultPageSize;
  31.                 }
  32.                 // 设置排序参数
  33.                 String orderBy = request.getParameter("orderBy");
  34.                 if (StringUtils.isNotBlank(orderBy)){
  35.                         this.setOrderBy(orderBy);
  36.                 }
  37.         }
复制代码


然而这仅在单独菜单导出可以使用。
在系统中userList.jsp是无效的。
原因是进入系统userList后就有了pageSize的属性,这里使用是else if  (defaultPageSize != -2) 是无法把 -1赋值给 pageSize的。
具体修改 我没太去细想,初步认为 去掉 else 即可。
回复

使用道具 举报

admin 发表于 2016-12-20 15:41:46 | 显示全部楼层
mybatis 確實存在這個問題

hibernate版本應該沒有這個問題
回复 支持 反对

使用道具 举报

winco521 发表于 2017-3-21 15:24:14 | 显示全部楼层
@admin 没说怎么解决呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册新会员

本版积分规则

QQ|手机版|小黑屋|Archiver|jeesite 官方论坛. ( 吉ICP备12004769号  

GMT+8, 2018-6-18 17:09 , Processed in 0.125000 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表