頁(yè)面代碼:
<!--? 這個(gè)是顯示的多選框頁(yè)面 已有的角色要打勾,可以重新選擇角色-->
<form action="<c:url value="/sys/userRolesEdit.htm"/>" method="post" >
????? <table class="grid" width="100%" cellspacing="1">
?????
??? <tr>
?????? <td colspan="6" class="title">
????????? 角色列表
?????? </td>
??? </tr>
??? <tr>
??? ? <td class="column"></td>
?????? <td class="column">角色I(xiàn)D</td>
?????? <td class="column">角色名</td>
?????? <td class="column">角色代碼</td>
?????? <td class="column">角色描述</td>??????
??? </tr>
??? <!-- 循環(huán)顯示列表userRoles的每一項(xiàng),并判斷如果數(shù)據(jù)庫(kù)中已有的打勾<c:if test標(biāo)簽正確才執(zhí)行中間的代碼-->
??? <c:forEach items="${roles}" var="item">????
???<tr>??????
???? <td>
???? <input type="checkbox" name="rolesId" <c:forEach items="${userRoles}" var = "selectedRoles">
???? <c:if test="${item.srolId == selectedRoles.srolId}">checked="true"</c:if></c:forEach>
????? value="<c:out value="${item.srolId}"/>" />
???? </td>
???
???? <td><c:out value="${item.srolId}"/></td>
??????? <td><c:out value="${item.srolName}"/> </td>
???????????????? <td><c:out value="${item.srolCode}"/></td>
???????????????? <td><c:out value="${item.srolDesc}"/></td>????????????????
???? <tr>???????
??? </c:forEach> ??
???
??? <tr>
?????? <td colspan="6" class="nav">
?????? ??? <input type="hidden" name="userID"
???value=<c:out value="${userInfo.suinId}"/>>
????? <input type="submit" class="button3" value="提交"/>
????? <INPUT type="button" class="button2" value="返回" onclick="history.back()" />
?????
?????? </td>
??? </tr>
?? </table>?
?? </form>
控制器代碼:
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
??// TODO Auto-generated method stub
??
??Map result = new HashMap();
??
??SysUserinfo userInfo = null;
??????? String id = request.getParameter("userID");
??????? System.out.println(id);
??????? if (id != null && !id.equals(""))
??????? {
??????????? userInfo = (SysUserinfo) sysService.get(SysUserinfo.class,
??????????????????? new Long(id));
???????????
??????? }
??????? else
??????? {
???????????
??????? }
???????
??????? result.put("userInfo", userInfo);
??????? result.put("roles", sysService.getSupportData("SysRole", null));
??????? if (userInfo != null)
??????? {
??????? ?result.put("userRoles", sysService.getUserRoles(userInfo));
??????? }
???????
?
???????
??????? SysUserRole sysUserRole = null;
??????? SysRole sysRole = null;
??????? String roleId = null;
???????
??????? // 記錄父列表ID
??????? result.put("parentlistID", request.getParameter("parentlistID"));
??????? result.put("userInfo", userInfo);
????????
?????????//遍歷所有map里的key
??????? Iterator it = result.keySet().iterator();
??????? while (it.hasNext())
??????? {
??????????? String key = (String) it.next();
??????????? request.setAttribute(key, result.get(key));
??????? }
????????
?????????//這里就是從列表多選框傳過(guò)來(lái)的數(shù)值。根據(jù)name屬性獲得所有的value
??????? String[] rolesId = null;
??????? rolesId = request.getParameterValues("rolesId");
??????? System.out.println("------------------------" + rolesId + "-------------------");
???????
??????? if (rolesId == null || rolesId.equals(null))
??????? {
??????? ?return new ModelAndView(formView);
??????? }
???????
??????? else
??????? {?????
??????? ?List userRoles = (List)sysService
??????? ??.getUsersUserRoles(userInfo.getSuinId());
??????//先刪除數(shù)據(jù)庫(kù)中所有的,再插入所選的值
?????????for (int k = 0; k < userRoles.size(); k++)
??? ??{
??? ???SysUserRole userRole = (SysUserRole)userRoles.get(k);?? ???
??? ???sysService.delete(userRole);
??? ???
??? ??}
??????? ?
??????? ?for (int i = 0; i < rolesId.length; i++)
??????? ?{
??????? ??roleId = rolesId[i];
??????? ??
??????? ??sysRole = (SysRole)sysService.get(SysRole.class, new Long(roleId));
??????? ??sysUserRole = new SysUserRole();
??????? ??sysUserRole.setUser(userInfo);
??????? ??sysUserRole.setRole(sysRole);
??????? ??sysService.save(sysUserRole);?????? ?
??????? ?}
?????????//如果在###-servlet.xml配置文件中,successView不能傳遞參數(shù),可在這里直接有response導(dǎo)向別的頁(yè)面
?????????response.sendRedirect(request.getContextPath()
??????? ???+ "/sys/userRolesList.htm?userID=" + userInfo.getSuinId().toString());
??????? ?return null;
??????? }
?}