今天用若依开发的时候又发生了报错。
前端:
查看控制台:
这一看就不是前端的错误了,明显是后台返回出错了!
后端:
很明显,后端报错空指针错误。
// com.ruoyi.pdmc.controller.PdmcFormController.myApproval
/**
* 查询我的审批 s
* @param id userId
* */
@PreAuthorize("@ss.hasPermi('pdmc:form:query')")
@GetMapping("/myApproval")
public TableDataInfo myApproval(Long id){
startPage();
List<Map<String,Object>> list = pdmcRequestService.myApproval(id);
return getDataTable(list);
}
很简单,很常用的方法。
当然,我们此时可以在这里直接判断空,然后做业务操作(这里不展开)。
但是如果我分页用得比较多,而且空值比较多的情况下,就需要反复对null进行判断,这一点都不酷的(code)。
此时!
就需要我们稍微去看一下若依的源码。
List<Map<String,Object>> list = pdmcRequestService.myApproval(id);
这句话总没有什么问题,对吧
那出问题的就是这段代码:
return getDataTable(list);
同样的,return不会出什么错。那就是 getDataTable的问题。
分页的问题!
当我们定位到 BaseController中的getDataTable方法,基本就结束了。
/**
* 响应请求分页数据
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected TableDataInfo getDataTable(List<?> list)
{
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(list);
rspData.setTotal(new PageInfo(list).getTotal());
return rspData;
}
问题就出在
rspData.setTotal(new PageInfo(list).getTotal());
/**
* 响应请求分页数据
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected TableDataInfo getDataTable(List<?> list)
{
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(list);
if (list != null){
rspData.setTotal(new PageInfo(list).getTotal());
}
rspData.setTotal(0);
return rspData;
}
其实有些问题并不难,还是多看下源码。源码也不难。没必要一碰到问题就去git上issue。然后作者问你复现的条件,你又支支吾吾说不出来。
多看看源码,不难。
加油,打工仔。