进入用户角色页面
- (1)先查看页面
UserController
@RequestMapping(path = "/toUserRole", method = {RequestMethod.GET, RequestMethod.POST})
public String toUserRole(String userId){
//接收页面传过来的userId
l.info("toUserRole userId="+userId);
//使用userId查找用户对象
User user = iUserService.findUserById(userId);
//转发给页面
request.setAttribute("user",user);
return "system/user/user-role";
}
查找用户角色的业务
编写sql完成查询用户角色列表
# 查找所有的角色
select * from pe_role order by order_no asc;
# 查找老王的所有的角色
select *
from pe_role_user ru,pe_role r
where ru.role_id= r.role_id
and ru.user_id = '002108e2-9a10-4510-9683-8d8fd1d374ef'
UserController
@Autowired
IRoleService iRoleService;
@RequestMapping(path = "/toUserRole", method = {RequestMethod.GET, RequestMethod.POST})
public String toUserRole(String userId){
//接收页面传过来的userId
l.info("toUserRole userId="+userId);
//使用userId查找用户对象
User user = iUserService.findUserById(userId);
//转发给页面
request.setAttribute("user",user);
//所有角色的数据
String companyId=getLoginCompanyId();
List<Role> roleList = iRoleService.findAll(companyId);
//老王的角色数据
List<Role> userRoleList = iRoleService.findRolesByUserId(userId);
l.info("toUserRole roleList = "+roleList);
l.info("toUserRole userRoleList = "+userRoleList);
for(Role role: roleList){
//当前公司的所有的角色
if(isInUserRoleList(role,userRoleList)){
role.setChecked(true);
}
}
//转发到页面
request.setAttribute("roleList",roleList);
request.setAttribute("userRoleList",userRoleList);
return "system/user/user-role";
}
//当前的复选框 要不要打勾 取决于是否在 用户的角色列表中
private boolean isInUserRoleList(Role role, List<Role> userRoleList) {
for( Role r:userRoleList){
if(r.getRoleId().equals(role.getRoleId())){
return true;
}
}//end for
return false;
}
IRoleService ,RoleSeviceImpl
<Role> findAll(String companyId);
List<Role> findRolesByUserId(String userId);
@Override
public List<Role> findAll(String companyId) {
return iRoleDao.findAll(companyId);
}
@Override
public List<Role> findRolesByUserId(String userId) {
return iRoleDao.findByUserId(userId);
}
IRoleDao,IRoleDao.xml
<Role> findByUserId(String userId);
<select id="findByUserId" parameterType="string" resultMap="roleMap">
select *
from pe_role_user ru inner join pe_role r
on ru.role_id= r.role_id
where ru.user_id = #{userId}
</select>
Role增加checked变量
private boolean checked;//在角色列表中打上勾
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
user-role.jsp
<c:forEach items="${roleList}" var="role" varStatus="vs">
<spanstyle="padding:3px;margin-right:30px;width: 160px;display:">
<input type="checkbox" name="roleIds" value="${role.roleId}"
<%-- 根据role对象中的checked属性进行判断,如果为true,则打勾,否不打勾--%>
<c:if test="${role.checked}">
checked
</c:if>
/>
${role.name}
</span>
</c:forEach>