比如, 我们在添加 员工信息 时, 需要选中该员工所分配的部门名称, 这个部门名称不能在添加 员工信息 的 form 表单中写死, 如果这个部门一旦撤离, 又要在前台页面修改添加 员工信息 的 form 表单中部门的信息, 所以我们需要从部门表中动态获取 当前所开设的部门, 让这些部门信息自动显示在要添加 员工信息 的 form 表单中.
如何实现该功能? 我们需要在当用户点击 新建员工信息 时, 后台执行的顺序是先查询 部门 表中的 部门编号 和 部门名称, 然后将查询到的结果封装到 List<Dept> 中, 再将该结果返回到添加 员工信息 的 form 表单页面上.
我们还是基于上一篇文章进行编写 : https://blog.csdn.net/weixin_42629433/article/details/83379538
下面我们做具体演示操作:
1. 用户点击 新建员工信息 请求:
<button type="button" class="btn btn-default" title="新建" onclick="location.href='${pageContext.request.contextPath}/dept/findDeptIdsAndDeptNames.do'">
<i class="fa fa-file-o"></i> 新建
</button>
2. 后台接收到请求查询部门表中 部门编号 和 部门名称
controller 层:
@RequestMapping("/findDeptIdsAndDeptNames.do")
public ModelAndView findDeptId(){
ModelAndView mv = new ModelAndView();
List<Dept> deptIdsAndDeptNames = deptService.findDeptIdsAndDeptNames();
System.out.println(deptIdsAndDeptNames);
mv.addObject("deptIdsAndDeptNamesList", deptIdsAndDeptNames);
mv.setViewName("emp-add");
return mv;
}
service 层接口:
//查询所有 deptId 和对应的 deptName
public List<Dept> findDeptIdsAndDeptNames();
service 层接口实现类:
public List<Dept> findDeptIdsAndDeptNames() {
return deptDao.findDeptIdsAndDeptNames();
}
dao 层接口:
//查询所有 deptId 和对应的 deptName
@Select("select id,deptName from dept where deptStatus = 1")
public List<Dept> findDeptIdsAndDeptNames();
3. 添加员工信息页面
前台获取到后台 controller 层的 ModelAndView 视图, 携带视图中查询到的 部门编号 和 部门名称的集合 跳转到指定 添加员工信息 的视图页面, 前台选择 部门 处的改动如下:
<div class="col-md-2 title">部门</div>
<div class="col-md-4 data">
<select id="deptId" class="form-control select2" style="width: 100%" name="deptId">
<option value="noSelect" selected="selected"><--请选择--></option>
<c:forEach items="${deptIdsAndDeptNamesList}" var="Dept">
<option value=${Dept.id}>${Dept.deptName}</option>
</c:forEach>
</select>
</div>
代码下载: https://pan.baidu.com/s/1M_VVsq4oWbucaESeqmxjug
***此代码需在 jdk1.8 下运行使用***