在springmvc+mybatis的项目中,利用mybatis分页插件mybatis-paginator进行分页查询,结果出现了500异常,后端又没有明显的报错。
原来的写法,返回Map对象,由springmvc里面的机制转为json对象,这样就会导致,在转json过程中的报错,都隐藏了,无法抛出,前端获取不到正确的数据,
最后就出现了500的异常。
@RequestMapping(value = "/query") @ResponseBody public Map<String, Object> data(HttpServletRequest request, HttpServletResponse response, CreditloanInfoParams params) { Map<String, Object> data = new HashMap<String, Object>(); if(params==null){ params=new CreditloanInfoParams(); } PageList<CreditloanInfo> list = (PageList<CreditloanInfo>) creditloanInfoService.getCreditloanInfoListData(params); data.put("total", list.getPaginator().getTotalCount()); data.put("rows", list); return data; }
改成使用fastJson主动转化为json格式的字符串,这样的好处是,转json过程中如果出现错误,会有很明确的提示。
@SuppressWarnings("unchecked") @RequestMapping(value = "/query") @ResponseBody public String data(HttpServletRequest request, HttpServletResponse response, BlackParams params) { //Map<String, Object> data = new HashMap<String, Object>(); /*PageList<Blacklist> blackDatas = (PageList<Blacklist>) blackService.getPageData(params); data.put("total", blackDatas.getPaginator().getTotalCount()); data.put("rows", blackDatas);*/ //blackService.getPageData(params); /* Map data = new HashMap(); PageList<Blacklist> blackDatas = blackService.getBlackListData(params); data.put("total", blackDatas.getPaginator().getTotalCount()); data.put("rows", blackDatas);*/ return JSON.toJSONString(blackService.getPageData(params)); }
最后发现是转json中出现了空指针异常。修复后,问题解决。