Springboot快速入门(五)——Debug:增加员工
2022-09-27 17:10:51

报错1:点击添加员工之后跳转页面错误

报错:java.lang.NullPointerException: null!

Collection<Department> departments=departmentDao.getDepartments();这一行代码,debug之后发现departmentDao值为null,可能departmentDao并没有装配进去。再对比EmployeeDao.java文件,发现少了@Repository
解决办法:在DepartmentDao.java文件前引入@Repository就ok

报错2:添加员工之后跳转到的页面只有两条完整数据

debug1:

此处id=null,此处猜测save方法或许有点问题,故进入save方法再进行调试

debug2:

此处id值是通过前端正确传入了的,没有问题,department也接收到了id值,故在下一个方法打上断点

debug3:

此处就出现问题了,department的id值并没有传入到employee中。再看这句代码,虽然employee.setDepartment取到了id值,但并没有把值传到employee.put之中,并且此处的employee.getId取不到department的id值,改为employees.put(employee.getDepartment().getId(), employee);之后再调试,发现department取上值了。

报错3:员工department值为空,数据只能添加显示5条

现在虽可以显示完记录并成功添加了,但是新添加的员工没有department

尝试:

在add.html页面把department的选择改为数字1~5

结果:发现每个部门对应的id为101-105,而之前前端传回后端的id却是1001-1005,则发现是在DepartmentDao.java文件中打错了部门的id,导致id与部门名不对应。

修改完成之后,发现部门值还是显示不出来,且每新增一条数据,就会删除一条数据,页面只会显示5条数据,考虑到前面更改了EmployeeDao中的代码,再重新恢复为之前作者的代码之后,页面显示正常!

1
2
employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId()));
employees.put(employee.getId(),employee);

再debug一下:部门的值已经传进去了

debug1:

部门的id传入

debug2:

save方法中获取到部门值

总结:

此次困扰最久的就是部门值不显示问题,归根结底还是自己粗心的原因,但是同时也对调试代码有了进一步的了解!