`
jxqc_job
  • 浏览: 529 次
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
自己的xml_dtree树形菜单的实现 自己的xml_dtree树形菜单的实现
1. tree.xml
<?xml version="1.0" encoding="UTF-8"?>
<treeMenu>
		<zeroMenu>
				<id>0</id>
				<pId>-1</pId>
				<name>MINI PDM</name>
				<url></url>
				<oneMenu>
					<id>1</id>
					<pId>0</pId>
					<name>创建</name>
					<url></url>
					<twoMenu>
						<id>11</id>
						<pId>1</pId>
						<name>创建鼎桥文档</name>
						<url>createDQDocument.jsp</url>
					</twoMenu>
					<twoMenu>
						<id>12</id>
						<pId>1</pId>
						<name>创建鼎桥部件</name>
						<url></url>
					</twoMenu>
					<twoMenu>
						<id>13</id>
						<pId>1</pId>
						<name>自制件/BOM审核流程</name>
						<url></url>
					</twoMenu>
				</oneMenu>
				<oneMenu>
					<id>2</id>
					<pId>0</pId>
					<name>工作空间</name>
					<url></url>
					<twoMenu>
						<id>21</id>
						<pId>2</pId>
						<name>我的任务</name>
						<url></url>
					</twoMenu>
					<twoMenu>
						<id>22</id>
						<pId>2</pId>
						<name>我已完成的任务</name>
						<url></url>
					</twoMenu>
				</oneMenu>
		</zeroMenu>
</treeMenu>

2. QueryTreeAction.java
package com.tdtech.pdm.create.action;

import java.io.FileInputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

import com.opensymphony.xwork2.ActionSupport;
import com.tdtech.pdm.create.pojo.MenuTreePojo;

public class QueryTreeAction extends ActionSupport{
	
	private List<MenuTreePojo> menus;
	public List<MenuTreePojo> getMenus() {
		return menus;
	}
	public void setMenus(List<MenuTreePojo> menus) {
		this.menus = menus;
	}
	public String execute() throws Exception{
		FileInputStream fis=new FileInputStream("D:\\XML_File\\tree.xml");
		SAXBuilder sb=new SAXBuilder();
		Document doc=sb.build(fis);
		Element root=doc.getRootElement();
		List menusTemp=root.getChildren();
		menus=new ArrayList<MenuTreePojo>();
		for(int i=0;i<menusTemp.size();i++){
			Element zeroMenu=(Element)menusTemp.get(i); //获取每个一级菜单
			this.dealResultset(zeroMenu);
			List oneMenus=zeroMenu.getChildren("oneMenu");
			for(int j=0;j<oneMenus.size();j++){
				Element oneMenu=(Element)oneMenus.get(j);
				this.dealResultset(oneMenu);
				List twoMenus=oneMenu.getChildren("twoMenu");
				for(int z=0;z<twoMenus.size();z++){
					Element threeMenu=(Element)twoMenus.get(z);
					this.dealResultset(threeMenu);
				}
			}
		}
		fis.close();
		HttpServletResponse response=ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		PrintWriter out=response.getWriter();
		out.write(this.packageMenus(menus));
		return null;
	}
	//处理遍历结果的方法
	public void dealResultset(Element element) throws Exception{
			Element id=element.getChild("id");
			Element pId=element.getChild("pId");
			Element name=element.getChild("name");
			Element url=element.getChild("url");
			
			int nId=Integer.parseInt(id.getText().trim());
			int nPId=Integer.parseInt(pId.getText().trim());
			String nName=name.getText().trim();
			String nUrl=url.getText().trim();
			
			MenuTreePojo menuTreePojo=new MenuTreePojo();
			menuTreePojo.setId(nId);
			menuTreePojo.setPId(nPId);
			menuTreePojo.setName(nName);
			menuTreePojo.setUrl(nUrl);
			this.menus.add(menuTreePojo);
	}
	//封装json格式的菜单数据
	private String packageMenus(List<MenuTreePojo> list){
		StringBuffer temp=new StringBuffer();
		MenuTreePojo menuTree=new MenuTreePojo();
		temp.append("[");
		for(MenuTreePojo m:list){
//			temp.append("{\"id\":\""+m.getId()+"\",\"pId\":\""+m.getPId()+"\",\"name\":\""+m.getName()+"\",\"open\":\""+m.getOpen()+"\"},");
			temp.append("{\"id\":\""+m.getId()+"\",\"pId\":\""+m.getPId()+"\",\"name\":\""+m.getName()+"\",\"open\":\""+m.getOpen()+"\",\"url\":\""+m.getUrl()+"\"},");
			
		}
		int index=temp.lastIndexOf(",");
		String s=temp.substring(0, index);
		StringBuffer menus=new StringBuffer();
		menus.append(s+"]");
		System.out.println(menus.toString());
		return menus.toString();
	}
	public static void main(String[] args) throws Exception{
		new QueryTreeAction().execute();
	}
}

3. struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<!-- 配置常量 -->
	<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
	<constant name="struts.i18n.reload" value="true" />
	<constant name="struts.devMode" value="true" />
	<!-- 配置包 -->
	<package name="struts-cps" extends="struts-default" namespace="/cps">
		<!-- 配置拦截器-->
		
		<!-- 配置Action -->
		<action name="menuTree" class="com.tdtech.pdm.create.action.QueryTreeAction">
		</action>
	</package>
	
</struts>

4.leftFrame.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>树形菜单</title>
	<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
	<link rel="StyleSheet" href="css/dtree.css" type="text/css" />
	<script type="text/javascript" src="js/dtree.js"></script>
	<SCRIPT type="text/javascript">
		<!--
		d = new dTree('d');	
		d.config.target="mainFrame";	
		$.ajax({
			type:"POST",
			url:"cps/menuTree!execute",
			dataType:"json",
			async:false,
			success:function(data){
				$(data).each(function(){
					d.add($(this).attr("id"),$(this).attr("pId"),$(this).attr("name"),$(this).attr("url"));
				});
			},
			error:function(data){
				alert(data);
			}
		});	
		document.write(d);
		//-->
	</SCRIPT>
	<style type="text/css">
		a{
	    	text-decoration:none;
		}
		a:hover{
		    color:white;
		    text-decoration:underline;
		}
		a.visited{
	    	color:red;
		}
	</style>
	
</head>
<body style="background:AliceBlue;">

</body>
</html>


Global site tag (gtag.js) - Google Analytics