JianI2014的专栏

2015年4月9日 天气冷 这里以“用户授权”为例说明

实现方法一(适合弹出modal的场景):后台代码如下:/** * 用户授权 * */public String authorization() throws Exception {//action为0代表请求授权页面,action为1代表需要更新数据到数据库if (getAction().equals(“0”)) {user = userService.get(userId);//获得用户所有权限allRoleList = roleService.getAllRole();//获得用户已有权限Set<Role> userRoleList = user.getRoles();//循环所有权限,如果用户已经选中,则标记,前台显示打钩outer: for (Role userRole : userRoleList) {inner: for (Role allRole : allRoleList) {if (userRole.getRoleId().equals(allRole.getRoleId())) {allRole.setIsCheck(1);break inner;}}}return ROLE;} else {userService.authorization(userId, roles);setPageData();return SUCCESS;}}

这段代码的大体意思是:在用户所有权限中,通过用户已有的权限与用户所有权限比较,,将已有的权限在用户所有权限中做了一个标记isCheck(1),所以在界面前端就可以通过如下的代码实现勾选的动作了

前端代码如下:=>==”${role.roleId}” checked=”checked”>${role.roleName}==”${role.roleId}”>${role.roleName}>

需要注意的地方是遇到json中要放一个对象及ArrayList的时候,可以把该对象及ArrayList放到一个Map中,由Map同一输出 当然有的同学会说,我不在后台在标记,直接在前端做可以吗。那当然可以,于是就有了第二种做法

实现方法二(适合于从一个跳转到另一个界面的场景,包括dialog中页面的跳转):<c:choose><c:when test=”${not empty customerIdsMap}”><input type=”checkbox” name=”ids” value=”${proposer.id}”<c:forEach items=”${customerIdsMap}” var=”cid”><c:if test=”${cid == proposer.id}”>checked=”checked”</c:if></c:forEach>/>${proposer.trueName}</c:when><c:otherwise><input type=”checkbox” name=”ids” value=”${proposer.id}” />${proposer.trueName}</c:otherwise></c:choose>

不过这个实现需要在后台分别返回customerIdsMap及proposer的对象,这两个对象一定要在同一域中,比如Json和request交叉混合就不行。因为request中的对象容易刷新丢失。

接受自己的失败面,是一种成熟,更是一种睿智;

JianI2014的专栏

相关文章:

你感兴趣的文章:

标签云: