spring+dwr+EXT 树菜单(转)
- /**
- * <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;
- }
- }
/**
* <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){ //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());
- });
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>