zTree 是一个依靠 jQuery 实现的多功能 “树插件”。
下载地址 https://gitee.com/zTree/zTree_v3
示例:
页面
树的节点数据
使用树插件实现查询、回显
查询:
在jsp页面中引入该插件。
<link rel="stylesheet" href="${ctx }/components/zTree/css/zTreeStyle/zTreeStyle.css" type="text/css" />
<script type="text/javascript" src="${ctx }/components/zTree/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="${ctx }/components/zTree/js/jquery.ztree.core-3.5.min.js"></script>
<script type="text/javascript" src="${ctx }/components/zTree/js/jquery.ztree.excheck-3.5.min.js"></script>
创建实体类封装树的属性值
创建Mapper,查询数据
List<TreeNode> listModuleOfTreeBean();
<select id="listModuleOfTreeBean" resultType="TreeNode">
select m.module_id id,m.parent_id pId,m.name from module_p m
</select>
service
public List<TreeNode> listModuleOfTreeBean() throws Exception {
return modulePMapper.listModuleOfTreeBean();
}
Controller
@RequestMapping("/tomodule")
public String tomodule(Model model,String roleId) throws Exception {
//查询当前角色的详细信息
RoleP role = roleService.getRoleByRoleId(roleId);
model.addAttribute("role",role);
return "sysadmin/role/jRoleModule";
}
回显:
mapper
//查询所有的权限,并把查询结果装到TreeBean里,并支持回显
List<TreeNode> listModuleOfTreeBeanByRoleId(String roleid);
<select id="listModuleOfTreeBeanByRoleId" parameterType="String" resultType="com.sxt.pojo.TreeNode">
select m.module_id id,m.parent_id pId,m.name,'true' checked from module_p m where m.module_id in(
select module_id from role_module_p rm where role_id=#{roleid}
)
union
select m.module_id id,m.parent_id pId,m.name,'false' checked from module_p m where m.module_id not in(
select module_id from role_module_p rm where role_id=#{roleid}
)
</select>
Service
/**
*回显权限
*/
@Override
public List<TreeNode> listModuleOfTreeBeanByRoleId(String roleid) throws Exception {
return modulePMapper.listModuleOfTreeBeanByRoleId(roleid);
}
Controller
@RequestMapping("/listModuleOfTreeBean")
@ResponseBody
public List<TreeNode> listModuleOfTreeBean(String roleId) throws Exception {
List<TreeNode> treeNodes = roleService.listModuleOfTreeBeanByRoleId(roleId);
return treeNodes;
}