报错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 | employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId())); |
再debug一下:部门的值已经传进去了
debug1:
部门的id传入
debug2:
save方法中获取到部门值
总结:
此次困扰最久的就是部门值不显示问题,归根结底还是自己粗心的原因,但是同时也对调试代码有了进一步的了解!