Saas-Export项目之部门数据回显
之前的经验
做数据回显一般就是在数据修改时需要查询出这条信息,然后再将数据拆分每一项逐一赋值在表单上,通常赋值就行,而且都是input type=text
这种类型的,所有只要在input里增加value=${value}
就行了。
问题
这次遇到的问题是,回显中不仅需要显示本部门的名字,还得显示上级部门的名字,表单中上级部门的选择还是用下拉框选择的,此外还多了单选框的赋值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F05FGhBs-1604148816973)(https://i.loli.net/2020/10/31/dJ46uZQpov1R9IP.png)]
而我数据库上级部门采用的是id赋值的,所以不能直接显示上级部门的id
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wUXYpGuh-1604148816975)(https://i.loli.net/2020/10/31/sGBPaAyL4cZMCed.png)]
解决问题
修改时上级部门不止一个,所以得把所有上级部门的名称查询出来,在回显查询一个部门信息时可以将这个需求添加进去
后台
//回显查询一个部门
@RequestMapping("one") //点击编辑后传输前台deptId进来
public ModelAndView findDepartment(String deptId) {
//查询要修改的部门信息
Department department = service.findDepartment(deptId);
//查询所有部门的信息,用于下拉框回显***
List<Department> list = service.findAllDepartments();
ModelAndView mv = new ModelAndView();
mv.addObject("department", department);//数据放入作用域,前台el表达式取出
mv.addObject("list", list);
mv.setViewName("system/dept/dept-update");//数据准备好后跳转到修改界面
return mv;
}
前台
<div class="col-md-2 title">上级部门</div>
<div class="col-md-10 data line-height36">
<select class="form-control" name="parent.id">
<!--关键部分-->
<option value="">请选择</option>
<c:forEach items="${list}" var="item"><!--list为所有部门信息,循环-->
<!--department为要修改的部门,一个个判断是否等于list内的一个部门id,有就添加selected显示-->
<option ${department.parentId == item.deptId ?'selected':''} value="${item.deptId}">${item.deptName}</option>
</c:forEach>
</select>
</div>
<div class="col-md-2 title">状态</div>
<div class="col-md-10 data">
<div class="form-group form-inline">
<div class="radio"><label><input type="radio" ${department.state==0?'checked':''} name="state" value="0">停用</label></div>
<div class="radio"><label><input type="radio" ${department.state==1?'checked':''} name="state" value="1">启用</label></div>
</div>
</div>
</form>
总结
遇到这种查询一条信息在回显界面,修改时还需要查询所有信息就需要在controller内再此查询所有信息,然后这个controller内添加两个数据到请求作用域内,对于下拉框和单选框,选中状态显示只需要添加属性selected
就行