DWZ 动态生成树菜单

基本思路:父节点装到一个list,子节点装到另外一个list,遍历父节点,再从父节点里面遍历子节点,拼接相应的html字符串。实现方法如下

public Map<String,Object> queryAccountMenu(Integer id) {
		List<Resources> list = this.resourcesMapper.queryAccountMenu(id);
		StringBuffer sb = new StringBuffer();
		List<Resources> folderList = new ArrayList<Resources>();
		List<Resources> menuList = new ArrayList<Resources>();
		for(Resources r : list){
			if(r.getType()==0){
				folderList.add(r);
			}else if(r.getType()==2){
				menuList.add(r);
			}
		}
		for(Resources res : folderList){
			sb.append("<div class=\"accordionHeader\"><h2><span>Folder</span>" + res.getName() + "</h2></div>");
			sb.append("<div class=\"accordionContent\"><ul class=\"tree treeFolder\">");
			for(Resources menu : menuList){
				if(menu.getParentId() == res.getId()){
					sb.append("<li><a href=\"" + menu.getResUrl() + "\" target=\""+menu.getTarget()+"\" rel=\""+menu.getResKey()+"\">" + menu.getName() + "</a></li>");
				}
			}
			sb.append("</ul></div>");
		}
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("menuHtml", sb.toString());
		map.put("menuList", list);
		return map;
	}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
最初在CSDN上发了这份代码,整合了ztree3.3的核心部分,详情可以参看这个地址的说明: http://download.csdn.net/detail/ohaozy/8691959 据部分朋友的意见,需要使用ztree的excheck功能,于是我重新整合了ztree3.5,包括excheck,以及部分ztree美化图标。 因为CSDN上资源被下载过就不能更新及删除,只好重新发一份。推荐朋友们下载这份源代码,原先下载过的朋友可以留给我邮箱或者发邮件给我:[email protected],我单独发给你们。 压缩包是完整的jfinal+dwz的测试性小代码,直接导入myeclipse,运行DwzConfig.java,访问http://localhost:8888/admin就可以进入页面。 代码例子是JAVA的,dwz,ztree等是前台的东西,和后台没有关系。不管.net还是php都通用,请根据使用的平台,修改发布WebRoot下的文件,修改admin.jsp就可以。 ztree代码已经集成到dwz.min.js,不要再次单独引入js。 使用例子: var setting = { check: { enable: true,//只有这个属性就是checkbox chkStyle: "radio", radioType: "all"//level }, data: { simpleData: { enable: true } } }; /* 要是菜单不响应点击事件,请设置url:"#" */ var zNodes =[ { id:1, pId:0, name:"菜单管理(不响应点击)",iconSkin:"pIcon01", url:"#",open:false}, { id:2, pId:1, name:"菜单2(响应点击)", iconSkin:"pIcon02",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit2",open:false}, { id:3, pId:2, name:"菜单3(不响应点击)", iconSkin:"pIcon02",url:"#", target:"navTab", rel:"articleAddEdit3",open:false}, { id:4, pId:3, name:"文章管理4", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit4"}, { id:5, pId:3, name:"弹出层", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"dialog", rel:"articleAddEdit5",mask:true,width:860,height:600}, { id:6, pId:3, name:"文章管理6", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit6"}, { id:7, pId:1, name:"文章管理7", iconSkin:"pIcon02",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit7"}, { id:8, pId:7, name:"文章管理8", iconSkin:"pIcon02", url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit8"}, { id:9, pId:8, name:"文章管理9", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit9"} ]; $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, zNodes); }); 有问题或建议请写评论或发信。
这份DWZ代码是我个人一直使用的,DWZ对各版本IE的兼容性是比较好的,我的代码在IE6下也基本能正常使用,这是一直舍不得换其它框架的主要原因。 压缩包是完整的jfinal+dwz的测试性小代码,直接导入myeclipse,运行DwzConfig.java,访问http://localhost:8888/admin就可以进入页面。 代码例子是JAVA的,dwz,ztree等是前台的东西,和后台没有关系。不管.net还是php都通用,请根据使用的平台,修改发布WebRoot下的文件,修改admin.jsp就可以。 页面集成了ztree3.3,kindeditor,My97DatePicker的使用例子。 本代码解决了DWZ集成ztree时,对于未展开的菜单点击后target无效的问题。以下是使用例子: var zNodes =[ { id:1, pId:0, name:"菜单管理(不响应点击)", url:"#",open:false}, { id:2, pId:1, name:"菜单2(响应点击)", url:"articleAddEdit.html", target:"navTab", rel:"articleAddEdit2",open:false}, { id:3, pId:2, name:"菜单3(不响应点击)", url:"#", target:"navTab", rel:"articleAddEdit3",open:false}, { id:4, pId:3, name:"文章管理4", url:"articleAddEdit.html", target:"navTab", rel:"articleAddEdit4"}, { id:4, pId:3, name:"弹出层", url:"articleAddEdit.html", target:"dialog", rel:"articleAddEdit5",mask:true,width:860,height:600}, { id:4, pId:3, name:"文章管理6", url:"articleAddEdit.html", target:"navTab", rel:"articleAddEdit6"} ]; $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, zNodes); }); 如果要菜单不响应点击事件,请设置url:"#" 此代码处理了弹出层刷新及弹出层分页问题,这部分没有提供例子。 别怪我分数这么贵,真心的自己花了时间去测试改进,希望帮助到更多朋友。 有问题或建议请写评论或发信。
好的,你可以使用百度短网址的API来生成短链接。以下是Java代码示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; public class BaiduShortUrl { public static void main(String[] args) { String longUrl = "http://www.baidu.com"; // 待转换的长链接 String apiKey = "你的API Key"; // 填写你在百度短网址申请的API Key String url = "http://dwz.cn/create.php"; String param = "url=" + URLEncoder.encode(longUrl, "UTF-8") + "&apikey=" + apiKey; String result = sendGet(url, param); System.out.println(result); } private static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); connection.setRequestMethod("GET"); connection.connect(); in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常:" + e); e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } } ``` 在上面的代码中,你需要替换 `longUrl` 和 `apiKey` 的值。`longUrl` 是你要转换成短链接的长链接,`apiKey` 是你在百度短网址申请的API Key。运行代码后,你将会得到一个 JSON 格式的响应,其中包含了生成的短链接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值