在修改数据时需要回显数据。
UserBean代码:
java">public class User {
private Long id;
private String username;
private String email;
private String password;
private String phoneNum;
private List<Role> roles; //复选框
......
后台Java代码:
java">@RequestMapping("/alterUI/{userId}")
public ModelAndView alterUI(@PathVariable Long userId, ModelAndView modelAndView){
User user = userService.findUserByUserId(userId);
List<Role> roleList = roleService.list();
List<String> roleNames=new ArrayList<String>();
for (Role role : user.getRoles()) {
String roleName = role.getRoleName();
roleNames.add(roleName);
}
modelAndView.addObject("roleList",roleList);
modelAndView.addObject("roleNames",roleNames);
modelAndView.addObject("user",user);
modelAndView.setViewName("user-alter");
return modelAndView;
}
导入JSP标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
JSP实现:
先从数据库中查出所有复选框,再对每个复选框进行判断是否被选中,即roleNames数组中包含即被选中。
<div class="col-md-10 data">
<c:forEach items="${roleList}" var="role">
<input class="" id="${role.id}" type="checkbox" name="roleIds" value="${role.id}" ${fn:contains(roleNames,role.roleName)?'checked':''} >${role.roleName}
</c:forEach>
</div>