`
xurichusheng
  • 浏览: 336445 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

权限页面展示布局

    博客分类:
  • jsp
 
阅读更多

 

目的:

需要将权限做如下图所示的展示:



 

1. 数据库表结构

    表名: ss_permission

 

ID           VARCHAR2(32)  PRIMARY KEY,
DISPLAY_NAME VARCHAR2(500),
NAME         VARCHAR2(300),
PARENT_      VARCHAR2(32)
LEAF_        VARCHAR2(1)

 

 

2. 表数据



 

其中,parent_ 为空,表示是父权限。

 

3. 表对应的实体类 SsPermission.java

 

import java.io.Serializable;
import java.util.List;

public class SsPermission implements Serializable {
	/**
	 * @Fields serialVersionUID : 序列化id
	 */
	private static final long serialVersionUID = 3410077426635038417L;

	private String id;	
	private String displayName;
	private String name;
	private String parent_;
	private String leaf_;

	// 子权限集合
	private List<SsPermission> childs;

	// 省略 setter/getter
}

    由于需要展示父权限及其子权限,所以实体类中需要有一个子权限集合的属性。

 

 

4. 实现思路

   首先,查询出所有的父权限信息

   

public List<SsPermission> findAllParents() throws Exception {

		List<SsPermission> list = new ArrayList<SsPermission>(10);

		StringBuffer sql = new StringBuffer(100);

		sql.append("SELECT ID, NAME, DISPLAY_NAME, PARENT_ ");
		sql.append(" FROM SS_PERMISSION ");
		sql.append(" WHERE (PARENT_ IS NULL OR PARENT_ = '') ");
		sql.append(" AND LEAF_='0'");

		list = getJdbcTemplate().query(sql.toString(),
				new RowMapper<SsPermission>() {

					@Override
					public SsPermission mapRow(ResultSet rs, int index)
							throws SQLException {

						SsPermission p = new SsPermission();

						p.setId(rs.getString("ID"));
						p.setName(rs.getString("NAME"));
						p.setDisplayName(rs.getString("DISPLAY_NAME"));
						p.setParent_(rs.getString("PARENT_"));

						return p;
					}
				});

		return list;
	}

   

 

   其次,循环父权限,根据父权限id查找其所有的子权限,将结果存入子权限集合childs中。

 

public List<SsPermission> findChildsById(final String permissionId)
			throws Exception {

		List<SsPermission> list = new ArrayList<SsPermission>(10);

		StringBuffer sql = new StringBuffer(100);

		sql.append("SELECT ID, NAME, DISPLAY_NAME, PARENT_ ");
		sql.append(" FROM SS_PERMISSION ");
		sql.append(" WHERE PARENT_ = ?");

		list = getJdbcTemplate().query(sql.toString(),
				new Object[] { permissionId }, new RowMapper<SsPermission>() {

					@Override
					public SsPermission mapRow(ResultSet rs, int index)
							throws SQLException {

						SsPermission p = new SsPermission();

						p.setId(rs.getString("ID"));
						p.setName(rs.getString("NAME"));
						p.setDisplayName(rs.getString("DISPLAY_NAME"));
						p.setParent_(rs.getString("PARENT_"));

						return p;
					}
				});

		return list;
	}

 

 

总的实现方法如下所示:

import java.util.ArrayList;
import java.util.List;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/toSelectPermission")
public String toSelectPermission(Model model) {

	// 父权限
	List<SsPermission> permissions = new ArrayList<SsPermission>(10);

	try {
		// 查找所有的父权限
		List<SsPermission> parents = permissionService.findAllParents();

		if (null != parents && !parents.isEmpty()) {

			SsPermission per = null;

			for (SsPermission p : parents) {

				per = new SsPermission();

				per.setId(p.getId());
				per.setName(p.getName());
				per.setDisplayName(p.getDisplayName());
				// 根据父权限id查找对应的子权限
				per.setChilds(permissionService.findChildsById(p.getId()));

				permissions.add(per);
			}
		}

	} catch (Exception e) {
		log.error("Go to SelectPermission page fail:" + e.getMessage(), e);
	}

	model.addAttribute("permissionList", permissions);

	return "security/selectPermissions";
}

 

5. jsp 页面展示

<style type="text/css">
.clearfix{zoom:1;}
.clearfix:after{content:′.′;display:block;visibility:none;height:0;clear:both;}
#bd{/*background-color:#DDD;*/min-height:50px;_height:50px;}
#bd .right{/*background-color:red;*/float:right;width:100%;margin-left:-25em;}
#bd .right .content{margin-left:100px;/*background-color:blue;color:#FFF;*/}
#bd .left{/*background-color:green;color:#FFF;*/width:260px;float:left;}
</style>

<body>
<table align="center" class="bordered" border="0">
<c:forEach items="${permissionList }" var="parentPer" varStatus="status">
		<tr>		
			<td>
		  	<div class="left">
		  		<p>${parentPer.displayName }: </p>
		  	</div>
		  	</td>
		  	<td>
		  	<div class="right">
		  		<div class="content">
		 			 <p>
		 			 	<c:forEach items="${parentPer.childs }" var="childPer" varStatus="status">
							<input type="checkbox" id="" name="child_name" 
								value="${childPer.id }"/>${childPer.displayName }
						</c:forEach>
		 			 </p>		 			 
		  		</div>
		  	</div> 
		  	</td> 	
		  
		  </tr>	
	</c:forEach>
</table>
</body>

 

 

  • 大小: 2.3 KB
  • 大小: 11.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics