<div class="col-sm-8"> <input type ="checkbox" name="yxxq" th:each ="role : ${xqglList}" th:value="${role.id}" th:text ="${role.xqmc}" th:attr ="checked=${yxxqList.contains(role.id)?true:false}"> </div>
1.首先获取复选框的值
@PostMapping("/edit")
public String editSave(PsyRyxx psyRyxx,@RequestParam("yxxq") String[] yxxq) {
}
这里在参数上加上@RequestParam注解,获取的是String数组名称与复选框的name属性相同即可
2.回显
@GetMapping("/edit/{id}")
public String edit(@PathVariable("id") String id, ModelMap mmap) {
PsyRyxx psyRyxx = psyRyxxService.selectPsyRyxxById(id);
List<PsyXqgl> xqglList = psyXqglService.selectPsyXqglList(new PsyXqgl());
List<String> yxxq = psyYxxqService.selectPsyYxxqByZyid(psyRyxx.getXm());
List<Integer> yxxqList = new ArrayList<>();
//类型转换
for(String xq :yxxq){
yxxqList.add(Integer.valueOf(xq));
}
mmap.put("psyRyxx", psyRyxx);
mmap.put("xqglList", xqglList);
mmap.put("yxxqList", yxxqList);
return prefix + "/edit";
}
回显时传多了一个参数yxxqList是List<String>的集合,用于是否被选中的判断,另一个是xqglList参数为复选框内容,这里有个先问题就是要类型转换,Thymeleaf可以是使用java里的函数,之前因为数据库中的id存储类型不一致,导致无法判断正确。使用 checked=${yxxqList.contains(role.id)?true:false}即使list的cantains函数,然后th:arrt添加属性checked=true or false