spring+dwr+EXT 树菜单(转)
-
-
-
- public class Menu {
- private int menuId;
- private int menuPid;
- private String menuName;
- private String menuUrl;
-
- }
-
-
-
-
- public interface IMenuService {
-
-
-
-
-
- public List<Menu> queryFirstMenu(int menuId);
-
-
-
-
- public List<Menu> queryMenu();
- }
-
-
-
-
- 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>();
-
- 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;
- }
- }
/**
* <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配置)
- 在<allow></allow>里面添加如下,这里用spring注入,也可以不用它注入,如有不懂需要看看dwr用法
-
- <create creator="spring" javascript="menuService">
- <param name="beanName" value="menuService"/>
- </create>
-
- <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配置)
- <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(使用队列把结点加入)
- 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){
- 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());
-
- });
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
不要忘了加上
- <script type="text/javascript" src="<%=path %>/js/treeTest.js"></script>
- <script src='<%=path %>/dwr/interface/menuService.js'></script>
- <script src='<%=path %>/dwr/engine.js'></script>
- <script src='<%=path %>/dwr/util.js'></script>
分享到:
相关推荐
标题 "ext2+spring+hibernate+dwr.rar_dwr MenuManage.js_ext2 ja" 提示我们这是一个关于集成技术的项目,其中包含了ext2、Spring、Hibernate和DWR(Direct Web Remoting)四个主要组件。这个项目的具体实现是通过...
这个名为"ext2.0+Hibernate+dwr+spring列子"的项目,就是一个很好的实例,展示了如何将这些技术结合在一起,实现一个基础的CRUD(创建、读取、更新、删除)操作。下面我们将详细探讨这些技术及其相互作用。 首先,...
【标题】"Ext+dwr+spring做的例子程序"是一个整合了三个关键技术的示例应用,主要展示了如何在Java Web开发中结合使用EXTJS(Ext)前端框架、Direct Web Remoting (DWR) 和Spring框架。这三个技术在现代企业级应用...
"Ext_Dwr_Spring_Hibernate任务管理系统"是一个集成多种技术的Web应用,主要目标是实现一个功能完善的任务管理平台。这个系统充分利用了JavaScript库EXT JS(EXT)的强大UI组件,DWR(Direct Web Remoting)的技术来...
标题 "extjs dwr spring" 涉及到的是三个重要的技术组件,它们分别是ExtJS、Direct Web Remoting (DWR) 和Spring框架。这些技术常用于构建现代、交互式的Web应用程序。 **ExtJS** 是一个JavaScript库,专门用于创建...
在本项目中,我们看到的是一个基于 Spring MVC 的示例应用,使用了 EXT 前端框架和 DWR(Direct Web Remoting)进行异步通信。 **EXT 前台实例** EXT 是一个用于构建富 Internet 应用(RIA)的 JavaScript 框架,...
EXT远程文件管理系统是一款基于Java Web技术构建的文件管理解决方案,它利用了EXTJS前端框架、Direct Web Remoting (DWR) 技术以及Java后端技术。EXTJS是一款功能强大的JavaScript库,专用于构建富互联网应用程序...
当用户操作树形视图时(例如点击节点、添加或删除节点),Ext Tree会通过DWR发送一个JavaScript调用到服务器端。DWR接收到这个调用后,执行相应的Java方法,处理数据变化,然后将更新的结果返回给前端。前端再根据...
使用`Ext.ux.plugins.GroupHeaderGrid`插件定义多层表头结构,通过`rows`数组指定不同层级的表头信息。 ### 服务与方法 - **公司服务(companyService)**:通过Spring自动注入,需在配置文件中进行相应配置。 - *...