spring+dwr+EXT 树菜单(转载)

spring+dwr+EXT 树菜单(转)

Java代码
  1. /** 
  2.  * <description> 菜单实体 
  3.  */  
  4. public class Menu {  
  5.     private int menuId; //自己ID  
  6.     private int menuPid; //父ID  
  7.     private String menuName; //菜单名  
  8.     private String menuUrl; //地址  
  9.     //get set方法  
  10. }  
  11.   
  12. /** 
  13.  * <description> 菜单列表处理接口 
  14.  */  
  15. public interface IMenuService {  
  16.   
  17.     /** 
  18.      * <description> 根据结点ID查找其第一级子结点 
  19.      * @param menuId 
  20.      */  
  21.     public List<Menu> queryFirstMenu(int menuId);  
  22.       
  23.     /** 
  24.      * <description> 获得所有菜单 
  25.      */  
  26.     public List<Menu> queryMenu();  
  27. }  
  28.   
  29. /** 
  30.  * <description> 菜单列表处理 
  31.  */  
  32. public class MenuServiceImpl implements IMenuService {  
  33.   
  34.     public List<Menu> queryFirstMenu(int menuId)  
  35.     {  
  36.         List<Menu> firstMenu = new ArrayList<Menu>();  
  37.         List<Menu> list = this.queryMenu();  
  38.         for(Menu m : list)  
  39.         {  
  40.             if(menuId == m.getMenuPid())  
  41.                 firstMenu.add(m);  
  42.         }  
  43.         return firstMenu;  
  44.     }  
  45.       
  46.     public List<Menu> queryMenu()  
  47.     {  
  48.         List<Menu> list = new ArrayList<Menu>();  
  49.         //菜单ID按1,2,3..., menuPid是父ID,这里只是为了举例  
  50.         int[] menuPid = new int[]{0,0,1,2,2,3,3,4,5,5,6,7,7,8};  
  51.         int length = menuPid.length;  
  52.         for(int i = 1; i <= length; i++)  
  53.         {  
  54.             Menu menu = new Menu();  
  55.             menu.setMenuId(i);  
  56.             menu.setMenuPid(menuPid[i - 1]);  
  57.             menu.setMenuName("menu" + i);  
  58.             menu.setMenuUrl("menuUrl" + i);  
  59.             list.add(menu);  
  60.         }  
  61.         return list;  
  62.     }  
  63. }  
/**
 * <description> 菜单实体
 */
public class Menu {
	private int menuId; //自己ID
	private int menuPid; //父ID
	private String menuName; //菜单名
	private String menuUrl; //地址
	//get set方法
}

/**
 * <description> 菜单列表处理接口
 */
public interface IMenuService {

	/**
	 * <description> 根据结点ID查找其第一级子结点
	 * @param menuId
	 */
	public List<Menu> queryFirstMenu(int menuId);
	
	/**
	 * <description> 获得所有菜单
	 */
	public List<Menu> queryMenu();
}

/**
 * <description> 菜单列表处理
 */
public class MenuServiceImpl implements IMenuService {

	public List<Menu> queryFirstMenu(int menuId)
	{
		List<Menu> firstMenu = new ArrayList<Menu>();
		List<Menu> list = this.queryMenu();
		for(Menu m : list)
		{
			if(menuId == m.getMenuPid())
				firstMenu.add(m);
		}
		return firstMenu;
	}
	
	public List<Menu> queryMenu()
	{
		List<Menu> list = new ArrayList<Menu>();
		//菜单ID按1,2,3..., menuPid是父ID,这里只是为了举例
		int[] menuPid = new int[]{0,0,1,2,2,3,3,4,5,5,6,7,7,8};
		int length = menuPid.length;
		for(int i = 1; i <= length; i++)
		{
			Menu menu = new Menu();
			menu.setMenuId(i);
			menu.setMenuPid(menuPid[i - 1]);
			menu.setMenuName("menu" + i);
			menu.setMenuUrl("menuUrl" + i);
			list.add(menu);
		}
		return list;
	}
}




2.dwr.xml(dwr配置)

Xml代码
  1. <allow></allow>里面添加如下,这里用spring注入,也可以不用它注入,如有不懂需要看看dwr用法  
  2.   
  3. <create creator="spring" javascript="menuService">  
  4.     <param name="beanName" value="menuService"/>  
  5. </create>  
  6.           
  7. <convert match="com.pk.entity.Menu" converter="bean"></convert>  
在<allow></allow>里面添加如下,这里用spring注入,也可以不用它注入,如有不懂需要看看dwr用法

<create creator="spring" javascript="menuService">
	<param name="beanName" value="menuService"/>
</create>
		
<convert match="com.pk.entity.Menu" converter="bean"></convert>



3.spring-menuService.xml(spring配置)

Xml代码
  1. <bean id="menuService" class="com.pk.handler.menu.service.MenuServiceImpl"></bean>  
<bean id="menuService" class="com.pk.handler.menu.service.MenuServiceImpl"></bean>



4.treeTest.js(使用队列把结点加入)

Js代码
  1. Ext.onReady(function(){  
  2.   
  3.     Ext.BLANK_IMAGE_URL = "resources/images/default/s.gif";  
  4.       
  5.     var root = new Ext.tree.TreeNode({  
  6.         text:'主菜单',  
  7.         expanded:true  
  8.     });  
  9.       
  10.     var tree = new Ext.tree.TreePanel({  
  11.         root:root,  
  12.         width:200  
  13.     });  
  14.       
  15.     function queryTree()  
  16.     {  
  17.         var menu = new Array();  
  18.           
  19.         DWREngine.setAsync(false); //同步方法  
  20.           
  21.         //取得根结点下的第一级子菜单  
  22.         menuService.queryFirstMenu(0, function(data){ //0代表根结点ID是0  
  23.             for(var i = 0; i < data.length; i++)  
  24.             {  
  25.                 var node = new Ext.tree.TreeNode({  
  26.                     text:data[i].menuName,  
  27.                     id:data[i].menuId,  
  28.                     url:data[i].menuUrl,  
  29.                     expanded:true  
  30.                 });  
  31.                   
  32.                 root.appendChild(node);  
  33.                   
  34.                 menu.push(node);  
  35.             }  
  36.         });  
  37.           
  38.         //循环队列  
  39.         for(var i = 0; i < menu.length; i++)  
  40.         {  
  41.             menuService.queryFirstMenu(menu[i].id, function(data2){  
  42.                 for(var j = 0; j < data2.length; j++)  
  43.                 {  
  44.                     var node = new Ext.tree.TreeNode({  
  45.                         text:data2[j].menuName,  
  46.                         id:data2[j].menuId,  
  47.                         url:data2[j].menuUrl,  
  48.                         expanded:true  
  49.                     });  
  50.                       
  51.                     menu[i].appendChild(node);  
  52.                       
  53.                     menu.push(node);  
  54.                 }  
  55.             });  
  56.         }  
  57.           
  58.         DWREngine.setAsync(true);  
  59.     }  
  60.       
  61.     queryTree();  
  62.       
  63.     tree.render(Ext.getBody());  
  64.       
  65. });  
Ext.onReady(function(){

	Ext.BLANK_IMAGE_URL = "resources/images/default/s.gif";
	
	var root = new Ext.tree.TreeNode({
		text:'主菜单',
		expanded:true
	});
	
	var tree = new Ext.tree.TreePanel({
		root:root,
		width:200
	});
	
	function queryTree()
	{
		var menu = new Array();
		
		DWREngine.setAsync(false); //同步方法
		
		//取得根结点下的第一级子菜单
		menuService.queryFirstMenu(0, function(data){ //0代表根结点ID是0
			for(var i = 0; i < data.length; i++)
			{
				var node = new Ext.tree.TreeNode({
					text:data[i].menuName,
					id:data[i].menuId,
					url:data[i].menuUrl,
					expanded:true
				});
				
				root.appendChild(node);
				
				menu.push(node);
			}
		});
		
		//循环队列
		for(var i = 0; i < menu.length; i++)
		{
			menuService.queryFirstMenu(menu[i].id, function(data2){
				for(var j = 0; j < data2.length; j++)
				{
					var node = new Ext.tree.TreeNode({
						text:data2[j].menuName,
						id:data2[j].menuId,
						url:data2[j].menuUrl,
						expanded:true
					});
					
					menu[i].appendChild(node);
					
					menu.push(node);
				}
			});
		}
		
		DWREngine.setAsync(true);
	}
	
	queryTree();
	
	tree.render(Ext.getBody());
	
});



5.jsp

不要忘了加上

Html代码
  1. <script type="text/javascript" src="<%=path %>/js/treeTest.js"></script>  
  2. <script src='<%=path %>/dwr/interface/menuService.js'></script>  
  3. <script src='<%=path %>/dwr/engine.js'></script>  
  4. <script src='<%=path %>/dwr/util.js'></script> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值