ZTree+Struts2+ajax+json实现checkbox权限树

zTree的插件可以在网上下载:http://www.ztree.me/v3/main.php#_zTreeInfo

参考了一些资料后,写的一个权限树(直接上代码):

1、JSP:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*"  
  2.     contentType="text/html; charset=gb2312" errorPage=""%>  
  3. <%@ page import="com.whu.model.baseinfo.*"%>  
  4. <%@ taglib uri="/struts-tags" prefix="s"%>  
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  6. <html>  
  7.     <head>  
  8.         <title>CheckTree v 0.2 by JJ Geewax</title>  
  9.   
  10.         <link rel="stylesheet" href="../js/JQuery zTree v3.3/css/demo.css"  
  11.             type="text/css" />  
  12.         <link rel="stylesheet"  
  13.             href="../js/JQuery zTree v3.3/css/zTreeStyle/zTreeStyle.css"  
  14.             type="text/css" />  
  15.   
  16.         <script type="text/javascript"  
  17.             src="../js/JQuery zTree v3.3/js/jquery-1.4.4.min.js">  
  18. </script>  
  19.         <script type="text/javascript"  
  20.             src="../js/JQuery zTree v3.3/js/jquery.ztree.core-3.3.js">  
  21. </script>  
  22.         <script type="text/javascript"  
  23.             src="../js/JQuery zTree v3.3/js/jquery.ztree.excheck-3.3.js">  
  24. </script>  
  25.   
  26.   
  27.         <script type="text/javascript">  
  28. var zTreeObj;  
  29. var setting = {  
  30.     check : {  
  31.         enable : true  
  32.     },  
  33.     data : {  
  34.         simpleData : {  
  35.             enable : true  
  36.         }  
  37.     }  
  38. };  
  39.   
  40. $(document).ready(function() {  
  41.     $.ajax( {  
  42.         url : "../systemManage/permTreeAction.action",  
  43.         type : "get",  
  44.         dataType : "json",  
  45.         success : initZtree  
  46.     });  
  47. });  
  48.   
  49. function initZtree(json) {  
  50.     var data = (json.permString);  
  51.     var zNodes = eval("(" + data + ")");  
  52.     zTreeObj = $.fn.zTree.init($('#kpiTree'), setting, zNodes);  
  53. }  
  54.   
  55. function submitCheckedNodes(treeNode) {  
  56.     var nodes = new Array();  
  57.     //取得选中的结点  
  58.     nodes = zTreeObj.getCheckedNodes(true);  
  59.     var str = "";  
  60.     for (i = 0; i < nodes.length; i++) {  
  61.         if (str != "") {  
  62.             str += ",";  
  63.         }  
  64.         str += nodes[i].id;  
  65.     }  
  66.     alert(str);  
  67. }  
  68. </script>  
  69.   
  70.   
  71.     </head>  
  72.   
  73.   
  74.     <body>  
  75.         <form action="" name="checkForm" method="post">  
  76.             <div>  
  77.                 <ul id="kpiTree" class="ztree"></ul>  
  78.             </div>  
  79.             <input type="button" value="提交" onclick="submitCheckedNodes()" />  
  80.         </form>  
  81.     </body>  
  82. </html>  


2、Action:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.whu.action;  
  2.   
  3. import java.util.ArrayList;  
  4. import com.opensymphony.xwork2.ActionSupport;  
  5. import com.whu.iservice.systemmanage.impl.PermService;  
  6. import com.whu.model.baseinfo.PermModel;  
  7. public class RoleAction extends ActionSupport {  
  8.   
  9.     /** 
  10.      *  
  11.      */  
  12.     private static final long serialVersionUID = 1L;  
  13.   
  14.     private IRoleService roleService = new RoleService();  
  15.   
  16.     private String permString;  
  17.   
  18.   
  19.     public String getPermString() {  
  20.         return permString;  
  21.     }  
  22.   
  23.     public void setPermString(String permString) {  
  24.         this.permString = permString;  
  25.     }  
  26.   
  27.     public String searchPermTree() {  
  28.           
  29.         try {  
  30.             ArrayList<PermModel> plist = new ArrayList<PermModel>();  
  31.             plist = (ArrayList<PermModel>) new PermService().findAllPerms();//获取所有权限  
  32.                             //拼成 json 字符串  
  33.             StringBuilder sb = new StringBuilder();  
  34.             int size = plist.size();  
  35.             sb.append("[");  
  36.             for (PermModel m : plist) {  
  37.                 size--;  
  38.                 sb.append("{id:\"");  
  39.                 sb.append(m.getPermid());  
  40.                 sb.append("\",pId:\"");  
  41.                 sb.append(m.getParentid());  
  42.                 sb.append("\",name:\"");  
  43.                 sb.append(m.getPermname());  
  44.                 //根据已有的权限,实现是否勾选,我用的是二分查找                 
  45.   
  46.                 sb.append("\"}");  
  47.                 if (size > 0) {  
  48.                     sb.append(",");  
  49.                 }  
  50.             }  
  51.             sb.append("]");  
  52.   
  53.             this.permString = sb.toString();  
  54.         } catch (Exception e) {  
  55.             // TODO Auto-generated catch block 50.  
  56.             e.printStackTrace();  
  57.         }  
  58.         return SUCCESS;  
  59.   
  60.     }  
  61.   
  62. }  

struts.xml:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <package name="sysManage" namespace="/systemManage"  
  2.     extends="struts-default,json-default">  
  3.     <action name="permTreeAction" class="com.whu.action.RoleAction" method="searchPermTree">  
  4.         <result type="json"></result>  
  5.     </action>  
  6.       
  7. </package>  


3、如果要让zTree初始化:

则在 拼成 json 字符串的时候,添加:

sb.append("\",checked:\"");sb.append(true);

4、效果图:

转载地址:http://blog.csdn.net/streamcc/article/details/8014672

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XGBoost是一种强大的机器学习算法,它可以用于回归和分类问题,并且在许多数据科学竞赛中表现出色。在XGBoost中,特征重要性是指特征模型预测能力的贡献程。了解特征重要性可以帮助我们理解哪些特征对于预测结果更为关键。 在XGBoost中,特征重要性可以通过计算特征的增益(gain)来评估。增益是解释每个特征的相对重要性的最相关属性。具体来说,XGBoost使用了一种基于模型的算法来计算特征的增益。在XGBoost的源码中,可以看到使用增益来进行特征重要性判断的过程。 要从XGBoost模型中访问和绘制特征重要性评分,可以使用XGBoost提供的函数。例如,可以使用`get_score`函数来获取特征重要性评分,并使用可视化工具(如matplotlib)将其绘制出来。这样可以更直观地了解哪些特征对于模型的预测能力更为重要。 在使用XGBoost模型进行特征选择时,可以根据特征重要性进行筛选。可以选择保留重要性较高的特征,或者根据自己的需求设定一个阈值,只保留重要性超过该阈值的特征。这样可以减少特征空间的维,提高模型的效率和泛化能力。 对于小型数据集,使用交叉验证作为模型评估方案可能是一种更有用的策略。交叉验证可以帮助我们更准确地评估模型的性能,并避免过拟合或欠拟合的问题。通过交叉验证,我们可以得到更稳定的特征重要性评估结果。 总之,XGBoost提供了一种有效的方法来计算和使用特征重要性。通过分析特征重要性,我们可以更好地理解模型的预测能力,并进行特征选择以提高模型的性能。 #### 引用[.reference_title] - *1* [Python中XGBoost的特性重要性和特性选择](https://blog.csdn.net/liuzonghao88/article/details/88857468)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【算法】关于xgboost特征重要性的评估](https://blog.csdn.net/sunyaowu315/article/details/90664331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [[机器学习] 模型(xgboost,lightgbm)特征重要性原理总结](https://blog.csdn.net/zwqjoy/article/details/97259891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值