`
反求诸己
  • 浏览: 549438 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

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

    博客分类:
  • 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> 
分享到:
评论

相关推荐

    ext2+spring+hibernate+dwr.rar_dwr MenuManage.js_ext2 ja

    标题 "ext2+spring+hibernate+dwr.rar_dwr MenuManage.js_ext2 ja" 提示我们这是一个关于集成技术的项目,其中包含了ext2、Spring、Hibernate和DWR(Direct Web Remoting)四个主要组件。这个项目的具体实现是通过...

    ext2.0+Hibernate+dwr+spring列子

    这个名为"ext2.0+Hibernate+dwr+spring列子"的项目,就是一个很好的实例,展示了如何将这些技术结合在一起,实现一个基础的CRUD(创建、读取、更新、删除)操作。下面我们将详细探讨这些技术及其相互作用。 首先,...

    Ext+dwr+spring做的例子程序

    【标题】"Ext+dwr+spring做的例子程序"是一个整合了三个关键技术的示例应用,主要展示了如何在Java Web开发中结合使用EXTJS(Ext)前端框架、Direct Web Remoting (DWR) 和Spring框架。这三个技术在现代企业级应用...

    Ext_Dwr_Spring_Hibernate任务管理系统

    "Ext_Dwr_Spring_Hibernate任务管理系统"是一个集成多种技术的Web应用,主要目标是实现一个功能完善的任务管理平台。这个系统充分利用了JavaScript库EXT JS(EXT)的强大UI组件,DWR(Direct Web Remoting)的技术来...

    extjs dwr spring

    标题 "extjs dwr spring" 涉及到的是三个重要的技术组件,它们分别是ExtJS、Direct Web Remoting (DWR) 和Spring框架。这些技术常用于构建现代、交互式的Web应用程序。 **ExtJS** 是一个JavaScript库,专门用于创建...

    spring mvc项目代码

    在本项目中,我们看到的是一个基于 Spring MVC 的示例应用,使用了 EXT 前端框架和 DWR(Direct Web Remoting)进行异步通信。 **EXT 前台实例** EXT 是一个用于构建富 Internet 应用(RIA)的 JavaScript 框架,...

    EXT远程文件管理系统

    EXT远程文件管理系统是一款基于Java Web技术构建的文件管理解决方案,它利用了EXTJS前端框架、Direct Web Remoting (DWR) 技术以及Java后端技术。EXTJS是一款功能强大的JavaScript库,专用于构建富互联网应用程序...

    DWRExt Tree

    当用户操作树形视图时(例如点击节点、添加或删除节点),Ext Tree会通过DWR发送一个JavaScript调用到服务器端。DWR接收到这个调用后,执行相应的Java方法,处理数据变化,然后将更新的结果返回给前端。前端再根据...

    web 个人总价注意开发规范

    使用`Ext.ux.plugins.GroupHeaderGrid`插件定义多层表头结构,通过`rows`数组指定不同层级的表头信息。 ### 服务与方法 - **公司服务(companyService)**:通过Spring自动注入,需在配置文件中进行相应配置。 - *...

Global site tag (gtag.js) - Google Analytics