|
该帖已经被评为良好帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-10-24
这个帖子发了几次,可能都因为太大而没有发成功
但实在是太想和大家分享了 所以就又发上来了,希望大家多多指点。 在我的菜单树中,使用到了struts,spring,hibernate,同时,菜单的生成,在项目中,也基于用户权限动态生成,在这里,只是示例如何处理节点,没有涉及到权限。 (关于权限,设计为这样的结构: create table menu(id varchar(32) primary key not null, name varchar(50) not null, location varchar(255), parentid varchar(32) ) ; create table role_menu (roleid varchar(32) not null, menuid varchar(32) not null); create table role(id varchar(32) not null, name varchar(50) not null, ) 接口如下: package com.myecsun.service.servicelayerinterface;
import java.util.HashMap;
import java.util.List;
import com.myecsun.dbengine.pojo.Newscategory;
import javax.servlet.http.HttpServletRequest;
import net.sf.navigator.menu.MenuRepository;
public interface INewscategoryService extends IBaseService {
/**
* 基础数据处理
*
* @param newscategory
* Newscategory
*/
public void saveOrUpdateNewscategory(Newscategory newscategory);
public void saveOrUpdateNewscategory(Newscategory newscategory,
Newscategory parentNewscategory);
public void removeNewscategory(String id);
public Newscategory getNewscategory(String id);
public List getNewscategorys();
/**
* 数据字典处理
*/
// 处理从数据库拿到后的数据。把这些数据从Newscategory 对象的形式装入FastHashMap中。
public List transNewscategoryAfterGetFromDataBase();
public List transNewscategoryAfterGetFromDataBase(String queryName,
String[] keys);
/**
* -----------------------------------------------------------------
* 根据一个给定的节点,抓出一根树(从父节点到子节点的顺序) 包括给定节点本身。
* -----------------------------------------------------------------
*/
public List getTree(String id, List result);
public List getTree(String id, List nodesCollection, List result);
/**
* 根据当前节点ID,取得一个从子节点根节点的树。 这些数据用来组装在一棵如下结构的树:
* Hoem>Article>TechnologyArticle>OpenSourceUseArticle>......
*
* @param id
* String
* @param nodesCollection
* List
* @return HashMap
*/
public List getLineTree(String id, List nodesCollection, List result);
/**
* 将目前竖形结构中的树,全转化为类似上一个方法 List getLineTree(String id,List
* nodesCollection)中的结构.
*
* @param nodesCollection
* List
* @return HashMap[]
*/
public HashMap getTree(List nodesCollection);
/**
* ---------------------------------------------------------------
* 根据一给定的同级父节点 得到一组树(从父节点到子节点的顺序)
*
* @param parentNodeCollection
* List
* @return List
* ----------------------------------------------------------------
*/
public List getTree(List parentNodeCollection, List result);
public List getTree(List parentNodeCollection, List nodesCollection,
List result);
/**
* -----------------------------------------------------
* 判断一个节点在给定的节点集合中是否有父节点。
*
* @param id
* String
* @param nodeCollection
* List
* @return boolean -------------------------------------------------------
*/
public boolean isHaveParentNode(String id, List nodeCollection);
/**
* --------------------------------------------------------
* 判断一个给定的节点,在一组给定的节点集合中,是否有子节点
*
* @param id
* String
* @param nodeCollection
* List
* @return boolean --------------------------------------------------------
*/
public boolean isHaveChildNode(String id, List nodeCollection);
/**
* -----------------------------------------------------------------------
* 将一组将要显示成树的节点集合 转制为可单击选择的集合。
*
* @param source
* List
* @return List
* -----------------------------------------------------------------------
*/
public List transNodeCollectionForCheckListRepository(List source);
/**
* 根据一个给定的节点编号,这个编号,可能是一个全局配置变量 拿出一根树 并送到界面上,供用户选择。
*
* @param request
* HttpServletRequest
* @param id
* String
* @return MenuRepository
*/
public MenuRepository buildMenuRepositoryForCheck(
HttpServletRequest request, String id);
public MenuRepository buildMenuRepositoryForCheck(
HttpServletRequest request, List nodesCollection);
public MenuRepository buildMenuRepositoryForCheck(HttpServletRequest request);
public MenuRepository buildMenuRepositoryDisplay(HttpServletRequest reqest,
String id);
public MenuRepository buildMenuRepositoryDisplay(
HttpServletRequest request, List nodesCollection);
public MenuRepository buildMenuRepositoryDisplay(HttpServletRequest request);
/**
* 节点维护
*
* @param n
* Newscategory
* @return HashMap
*/
public MenuRepository buuilMenuRepositoryForMaintenance(
HttpServletRequest request, List nodesCollection);
/**
* -------------------------------------------------- 将一个Newscategory
* 转化为FastHashMap ---------------------------------------------------
*/
public HashMap transNewscaetgoryToMap(Newscategory n);
/**
* 将一个如下结构的MAP转化为需要的结构 source 结构为: id,name,parentid.
* 转化后的结构为:id,name,parentname,parentid.
*/
public HashMap transItem(HashMap source, List nodesCollection);
/*
* 将转化后的FastHashp装入List中。
*/
public List transItems(List nodesCollection);
/**
* 如果根节点的parentID为NULL,则将根节点的parentID转化为"0" List中的结构为HashMap
*/
public List transRootsItems(List nodesCollection);
/**
* ------------------------------------------------ 根据ID拿到一个节点
* ------------------------------------------------
*/
public HashMap getNode(String id);
public HashMap getNode(String id, List nodesCollection);
/**
* ----------------------------------------- 取得一个节点的直接下级
* -------------------------------------------
*/
public List getDirectoryChildrenNodes(String id);
public List getDirectoryChildrenNodes(String id, List nodesCollection);
/**
* -------------------------------------------------------- 取得集合中的根节点
* --------------------------------------------------------
*/
public List getRoots();
public List getRoots(List nodesCollection);
/**
* ---------------------------------------------------------------
* 根据一个HQL,得到生成一根树所需要的所有资料,并返回,由这些资料组成一棵树。
* --------------------------------------------------------------
*/
public HashMap buildTreeForDisplay(String queryName, String[] keys,
HttpServletRequest request);
public HashMap buildTreeForCheck(String queryName, String[] keys,
HttpServletRequest request);
/**
* 节点维护
*/
public HashMap buileTreeForMaintenance(String queryName, String[] keys,
HttpServletRequest request);
}
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-10-24
实现类:
package com.myecsun.service.controller;
import javax.servlet.http.*;
import com.myecsun.dbengine.dblayerinterface.*;
import com.myecsun.dbengine.pojo.*;
import com.myecsun.service.servicelayerinterface.INewscategoryService;
import net.sf.navigator.menu.*;
import org.apache.commons.collections.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import com.myecsun.util.helper.CollectionUtil;
import com.myecsun.util.helper.PaginationSupport;
import com.myecsun.util.helper.StringPool;
public class DataDictionary extends BaseService implements INewscategoryService {
public DataDictionary() {
}
/**
* 根据一个给定的节点编号,这个编号,可能是一个全局配置变量 拿出一根树
* 并送到界面上,供用户选择。
*
* @param request HttpServletRequest
* @param id String
* @return MenuRepository
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public MenuRepository buildMenuRepositoryForCheck(HttpServletRequest
request, String id) {
List nodesCollection = this.getTree(id, new ArrayList());
return this.buildMenuRepositoryForCheck(request, nodesCollection);
}
public MenuRepository buildMenuRepositoryForCheck(HttpServletRequest
request, List nodesCollection) {
MenuRepository repository = new MenuRepository();
MenuRepository defaultRepository = (MenuRepository) request.getSession().
getServletContext().getAttribute(
MenuRepository.MENU_REPOSITORY_KEY);
repository.setDisplayers(defaultRepository.getDisplayers());
// List transNodesCollection = this.
// transNodeCollectionForCheckListRepository(
// nodesCollection);
Iterator it = nodesCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
MenuComponent mc = new MenuComponent();
mc.setName(item.get("name").toString());
mc.setTitle(item.get("name").toString());
if (this.isHaveParentNode(item.get("id").toString(),
nodesCollection)) {
MenuComponent parentMenu = repository.getMenu(item.get(
"parentname").toString());
if (parentMenu == null) {
parentMenu = new MenuComponent();
HashMap parentNode = this.getNode(item.get("parentid").
toString(), nodesCollection);
parentMenu.setName(parentNode.get("name").toString());
repository.addMenu(parentMenu);
}
mc.setParent(parentMenu);
}
if(!this.isHaveChildNode(item.get("id").toString(), nodesCollection)){
// String currentUrl = request.getRequestURL().toString();
// String subCurrentUrl = currentUrl.substring(0,
// currentUrl.lastIndexOf("/") + 1);
// StringBuffer url = new StringBuffer(subCurrentUrl);
// url.append("#");
// mc.setLocation(url.append("#").toString());
mc.setLocation("#");
}
repository.addMenu(mc);
}
return repository;
}
public MenuRepository buildMenuRepositoryForCheck(HttpServletRequest
request) {
return this.buildMenuRepositoryForCheck(request,
this.
transNewscategoryAfterGetFromDataBase());
}
public MenuRepository buildMenuRepositoryDisplay(HttpServletRequest reqest,
String id) {
List nodesCollection = this.getTree(id, new ArrayList());
return this.buildMenuRepositoryDisplay(reqest, nodesCollection);
}
public MenuRepository buildMenuRepositoryDisplay(HttpServletRequest request,
List nodesCollection) {
MenuRepository repository = new MenuRepository();
MenuRepository defaultRepository = (MenuRepository) request.getSession().
getServletContext().getAttribute(
MenuRepository.MENU_REPOSITORY_KEY);
repository.setDisplayers(defaultRepository.getDisplayers());
Iterator it = nodesCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
MenuComponent mc = new MenuComponent();
mc.setName(item.get("name").toString());
mc.setTitle(item.get("name").toString());
if (item.get("parentname") != null) {
MenuComponent parentMenu = repository.getMenu(item.get(
"parentname").toString());
if (parentMenu == null) {
parentMenu = new MenuComponent();
parentMenu.setName(item.get("parentname").toString());
repository.addMenu(parentMenu);
}
mc.setParent(parentMenu);
}
if (!this.isHaveChildNode(item.get("id").toString(),
nodesCollection)) {
String currentUrl = request.getRequestURL().toString();
String subCurrentUrl = currentUrl.substring(0,
currentUrl.lastIndexOf("/") + 1);
StringBuffer url = new StringBuffer(subCurrentUrl);
url.append(item.get("location"));
url.append("&nodeID=" + item.get("id"));
mc.setLocation(url.toString());
if(item.get("target")!=null){
mc.setTarget(item.get("target").toString());
}
// mc.setAction("testAction.do");
// mc.setDescription("stslklfksdklf description");
// mc.setPage("test set page");
// mc.setTarget("_blank");
// mc.setUrl("test url");
}
repository.addMenu(mc);
}
return repository;
}
public MenuRepository buildMenuRepositoryDisplay(HttpServletRequest request) {
return this.buildMenuRepositoryDisplay(request,
this.
transNewscategoryAfterGetFromDataBase());
}
/**
* 节点维护
* @param request HttpServletRequest
* @param nodesCollection List
* @return MenuRepository
*/
public MenuRepository buuilMenuRepositoryForMaintenance(HttpServletRequest
request, List nodesCollection) {
MenuRepository repository = new MenuRepository();
MenuRepository defaultRepository = (MenuRepository) request.getSession().
getServletContext().getAttribute(
MenuRepository.MENU_REPOSITORY_KEY);
repository.setDisplayers(defaultRepository.getDisplayers());
Iterator it = nodesCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
MenuComponent mc = new MenuComponent();
mc.setName(item.get("name").toString());
mc.setTitle(item.get("name").toString());
if (item.get("parentname") != null) {
MenuComponent parentMenu = repository.getMenu(item.get(
"parentname").toString());
if (parentMenu == null) {
parentMenu = new MenuComponent();
parentMenu.setName(item.get("parentname").toString());
repository.addMenu(parentMenu);
}
mc.setParent(parentMenu);
}
String currentUrl = request.getRequestURL().toString();
String subCurrentUrl = currentUrl.substring(0,
currentUrl.lastIndexOf("/") + 1);
StringBuffer url = new StringBuffer(subCurrentUrl);
url.append("newscategoryAction.do?method=categoryMaintenance&objectID="+item.get("id").toString());
mc.setLocation(url.toString());
repository.addMenu(mc);
}
return repository;
}
/**
* getNewscategory
*
* @param id String
* @return Newscategory
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public Newscategory getNewscategory(String id) {
return (Newscategory) DAO.loadObject(Newscategory.class, id);
}
/**
* getNewscategorys
*
* @return List
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public List getNewscategorys() {
return DAO.getAll("getNewscategorys");
// return DAO.loadAllObjects(Newscategory.class);
}
/**
*
* @param id String
* @param result List
* @return List
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public List getTree(String id, List result) {
return this.getTree(id, this.transNewscategoryAfterGetFromDataBase(),
result);
}
public List getTree(String id, List nodesCollection,
List result) {
List directoryChildrenNodes = this.getDirectoryChildrenNodes(
id, nodesCollection);
Iterator it = directoryChildrenNodes.iterator();
HashMap currentNode = this.getNode(id, nodesCollection);
result.add(currentNode);
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (this.isHaveChildNode(id, nodesCollection)) {
this.getTree(item.get("id").toString(), nodesCollection, result);
} else {
result.add(item);
}
}
return result;
}
|
|
| 返回顶楼 | |
|
最后更新时间:2006-10-24
/**
* ---------------------------------------------------------------
* 根据一给定的同级父节点 得到一组树
*
* @param parentNodeCollection List
* @param result List
* @return List
* ----------------------------------------------------------------
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public List getTree(List parentNodeCollection,
List result) {
return this.getTree(parentNodeCollection,
this.transNewscategoryAfterGetFromDataBase(),
result);
}
public List getTree(List parentNodeCollection,
List nodesCollection,
List result) {
Iterator it = parentNodeCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (this.isHaveChildNode(item.get("id").toString(), nodesCollection)) {
this.getTree(item.get("id").toString(), nodesCollection, result);
} else {
result.add(item);
}
}
return result;
}
/**
* --------------------------------------------------------
* 判断一个给定的节点,在一组给定的节点集合中,是否有子节点
*
* @param id String
* @param nodeCollection List
* @return boolean
* --------------------------------------------------------
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public boolean isHaveChildNode(String id, List nodeCollection) {
boolean result = false;
Iterator it = nodeCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (item.get("parentid").toString().equals(id)) {
result = true;
break;
}
}
return result;
}
/**
* -----------------------------------------------------
* 判断一个节点在给定的节点集合中是否有父节点。
*
* @param id String
* @param nodeCollection List
* @return boolean
* -------------------------------------------------------
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public boolean isHaveParentNode(String id, List nodeCollection) {
boolean result = false;
HashMap node = this.getNode(id, nodeCollection);
Iterator it = nodeCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (item.get("id").toString().equals(node.get("parentid").toString())) {
result = true;
break;
}
}
return result;
}
/**
* removeNewscategory
*
* @param id String
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public void removeNewscategory(String id) {
DAO.removeObject(Newscategory.class, id);
}
/**
* saveOrUpdateNewscategory
*
* @param newscategory Newscategory
* @param parentNewscategory Newscategory
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public void saveOrUpdateNewscategory(Newscategory newscategory,
Newscategory parentNewscategory) {
newscategory.setParentNewscategory(parentNewscategory);
parentNewscategory.getChildNewscategory().add(newscategory);
DAO.saveOrUpdateObject(newscategory);
}
/**
* 基础数据处理
*
* @param newscategory Newscategory
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public void saveOrUpdateNewscategory(Newscategory newscategory) {
DAO.saveOrUpdateObject(newscategory);
}
/**
*
* @return List
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public List transNewscategoryAfterGetFromDataBase() {
List source = this.getNewscategorys();
List result = new ArrayList(source.size());
Iterator it = source.iterator();
while (it.hasNext()) {
Newscategory item = (Newscategory) it.next();
HashMap temp = this.transNewscaetgoryToMap(item);
result.add(temp);
}
return result;
}
public List transNewscategoryAfterGetFromDataBase(String queryName,
String[] keys) {
List items = DAO.getAll(queryName);
CollectionUtil cU = new CollectionUtil();
// List temp = cU.transCollection(items);
List result = cU.transCollection(items, keys);
return result;
}
/**
* -----------------------------------------------------------------------
* 将一组将要显示成树的节点集合 转制为可单击选择的集合。
*
* @param source List
* @return List
* -----------------------------------------------------------------------
* @todo Implement this
* com.myecsun.service.servicelayerinterface.INewscategoryService
* method
*/
public List transNodeCollectionForCheckListRepository(
List source) {
List result = new ArrayList(source.size());
Iterator it = source.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if(!this.isHaveChildNode(item.get("id").toString(), source)){
String input =
"<input type=radio name=categorywillBeCheck onclick=SubmitValue(\'" +
item.get("id").toString() + "@#@" +
item.get("name").toString() + "\')" + " value=" +
item.get("id").toString() + "></input>";
item.put("name", item.get("name").toString() + " " + input);
}
// }
result.add(item);
}
return result;
}
public HashMap transNewscaetgoryToMap(Newscategory n) {
if (n == null) {
return null;
}
HashMap result = new HashMap();
result.put("id", n.getId());
result.put("name", n.getName());
result.put("description", n.getDescription());
result.put("action", n.getAction());
result.put("altImage", n.getAltImage());
result.put("froward", n.getForward());
result.put("height", n.getHeight());
result.put("image", n.getImage());
result.put("location", n.getLocation());
result.put("onclick", n.getOnclick());
result.put("onmouseout", n.getOnmouseout());
result.put("onmouseover", n.getOnmouseover());
result.put("page", n.getPage());
result.put("roles", n.getRoles());
result.put("target", n.getTarget());
result.put("tooltip", n.getTooltip());
result.put("width", n.getWidth());
if (n.getIsBeDeleted()) {
result.put("isBeDeleted", "1");
} else {
result.put("isBeDeleted", "0");
}
if (n.getParentNewscategory() == null) {
result.put("parentid", "0");
result.put("parentname", null);
} else {
result.put("parentid", n.getParentNewscategory().getId());
result.put("parentname", n.getParentNewscategory().getName());
}
return result;
}
public HashMap getNode(String id) {
return this.getNode(id, this.transNewscategoryAfterGetFromDataBase());
}
public HashMap getNode(String id, List nodesCollection) {
Iterator it = nodesCollection.iterator();
HashMap result = new HashMap();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (item.get("id").toString().equals(id)) {
result = item;
break;
}
}
return result;
}
public List getDirectoryChildrenNodes(String id) {
return this.getDirectoryChildrenNodes(id,
this.
transNewscategoryAfterGetFromDataBase());
}
public List getDirectoryChildrenNodes(String id,
List nodesCollection) {
List result = new ArrayList();
Iterator it = nodesCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (item.get("parentid").toString().equals(id)) {
result.add(item);
}
}
return result;
}
public List getRoots() {
return getRoots(this.transNewscategoryAfterGetFromDataBase());
}
public List getRoots(List nodesCollection) {
List result = new ArrayList();
Iterator it = nodesCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (!this.isHaveParentNode(item.get("id").toString(),
nodesCollection)) {
result.add(item);
}
}
return result;
}
public HashMap buildTreeForDisplay(String queryName, String[] keys,
HttpServletRequest request) {
HashMap result = new HashMap();
List items = this.transNewscategoryAfterGetFromDataBase(queryName, keys);
List menuItems = this.transItems(items);
List parentItems = this.getRoots(menuItems);
MenuRepository mr = this.buildMenuRepositoryDisplay(request, menuItems);
HashMap lineTree=this.getTree(menuItems);
result.put(StringPool.PARENT_NODES, parentItems);
result.put(StringPool.MENU_REPOSITORY, mr);
result.put(StringPool.LINE_TREE,lineTree);
return result;
}
public HashMap buildTreeForCheck(String queryName, String[] keys,
HttpServletRequest request) {
// TODO Auto-generated method stub
HashMap result = new HashMap();
List items = this.transNewscategoryAfterGetFromDataBase(queryName, keys);
List transRootNodesCollection=this.transItems(items);
List transedItems=this.transNodeCollectionForCheckListRepository(transRootNodesCollection);
List parentItems = this.getRoots(transedItems);
MenuRepository mr = this.buildMenuRepositoryForCheck(request, transedItems);
result.put("parentNodes", parentItems);
result.put("menuRepository", mr);
return result;
}
public HashMap transItem(HashMap source, List nodesCollection) {
// TODO Auto-generated method stub
String id = source.get("id").toString();
if (this.isHaveParentNode(id, nodesCollection)) {
String parentid = source.get("parentid").toString();
HashMap parentNode = this.getNode(parentid, nodesCollection);
source.put("parentname", parentNode.get("name").toString());
} else {
source.put("parentname", null);
}
return source;
}
public List transItems(List nodesCollection) {
// TODO Auto-generated method stub
if (nodesCollection == null || nodesCollection.size() < 1) {
return null;
}
List result = new ArrayList();
List transedRootsNodesCollection = this.transRootsItems(nodesCollection);
Iterator it = transedRootsNodesCollection.iterator();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
HashMap temp = this.transItem(item, transedRootsNodesCollection);
result.add(temp);
}
return result;
}
public List transRootsItems(List nodesCollection) {
// TODO Auto-generated method stub
Iterator it = nodesCollection.iterator();
if (nodesCollection == null || nodesCollection.size() < 1) {
return null;
}
List result = new ArrayList();
while (it.hasNext()) {
HashMap item = (HashMap) it.next();
if (item.get("parentid") == null) {
item.put("parentid", 0);
}
result.add(item);
}
return result;
}
public List getLineTree(String id, List nodesCollection, List result) {
Iterator it=nodesCollection.iterator();
while(it.hasNext()){
HashMap item=(HashMap) it.next();
if(this.isHaveParentNode(item.get("id").toString(),nodesCollection)){
HashMap currentNode=this.getNode(id,nodesCollection);
if(currentNode!=null){
result.add(currentNode);
}
this.getLineTree(item.get("id").toString(),nodesCollection,result);
}else{
result.add(item);
break;
}
}
List willReturn=new ArrayList();
if(result!=null&&result.size()>0){
for(int i=result.size();i>0;i--){
willReturn.add(result.get(i-1));
}
}
return result;
}
public HashMap getTree(List nodesCollection) {
if(nodesCollection==null||nodesCollection.size()<1){
return null;
}
HashMap result=new HashMap();
Iterator it=nodesCollection.iterator();
while(it.hasNext()){
HashMap temp=(HashMap) it.next();
List item=this.getLineTree(temp.get("id").toString(),nodesCollection,new ArrayList());
result.put(temp.get("id").toString(),item);
}
return result;
}
public HashMap buileTreeForMaintenance(String queryName, String[] keys,
HttpServletRequest request) {
List nodesCollection = this.transNewscategoryAfterGetFromDataBase(queryName,keys);
List menuItems=this.transItems(nodesCollection);
List roots=this.getRoots(menuItems);
MenuRepository mr=this.buuilMenuRepositoryForMaintenance(request,menuItems);
HashMap result= new HashMap();
result.put(StringPool.CATEGORY_MAINTENANCE_ROOTS,roots);
result.put(StringPool.CATEGORY_MAINTENANCE_MENUREPOSITORY,mr);
return result;
}
}
|
|
| 返回顶楼 | |
|
最后更新时间:2006-10-26
应大家要求,今天我把里面两个主要的类打包发上来。
其中要用到的包如下: Hibernate3.1.2 Spring1.2.7 Struts-menu2.4 apache collection lang 等 至于Spring的配置和Action的调用,相信大家比我要熟悉的多了:) |
|
| 返回顶楼 | |
|
最后更新时间:2006-10-26
在Spring中的主要配置如下:
<bean id="newscategoryManagerTarget" class="com.myecsun.service.controller.DataDictionary"> <property name="DAO" ref="DAO"></property> </bean> <bean id="newscategoryService" parent="txProxyTemplate"> <property name="target"> <ref local="newscategoryManagerTarget" /> </property> </bean> <bean id="DAO" class="com.myecsun.dbengine.controller.DAOUtils"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <bean name="/baseDispatchAction" class="com.myecsun.webengine.controller.BaseDispatchAction"> <property name="service"> <ref bean="service" /> </property> </bean> <bean id="service" class="com.myecsun.service.controller.Service"> <property name="baseService"> <ref local="baseService" /> </property> <property name="menuService"> <ref local="menuService" /> </property> <property name="groupService"> <ref local="groupService" /> </property> <property name="roleService"> <ref local="roleService" /> </property> <property name="userService"> <ref local="userService" /> </property> <property name="newsService"> <ref local="newsService" /> </property> <property name="newscategoryService"> <ref local="newscategoryService" /> </property> </bean> 在Action中的调用方法: HashMap menuSource = getService().getNewscategoryService().buildTreeForDisplay(
"buildTreeForDisplay", new String[] { "id", "name","location",
"parentid" }, request);
MenuRepository mr = (MenuRepository) menuSource
.get(StringPool.MENU_REPOSITORY);
ArrayList parentNodes = (ArrayList) menuSource
.get(StringPool.PARENT_NODES);
HashMap lineTree = (HashMap) menuSource.get(StringPool.LINE_TREE);
|
|
| 返回顶楼 | |
|
最后更新时间:2006-10-26
学习学习
|
|
| 返回顶楼 | |
|
最后更新时间:2006-10-27
俺们都是用XLoadTree实现,很不错的
|
|
| 返回顶楼 | |
|
最后更新时间:2006-10-27
用JavaScript处理的也可以啊
|
|
| 返回顶楼 | |
|
最后更新时间:2007-01-14
能不能劳驾下源码发过来,这样看的太累了,谢谢
|
|
| 返回顶楼 | |
|
最后更新时间:2007-04-16
这里有相关的录像教程和源代码
http://www.oksonic.cn/soft/show.asp?id=16 |
|
| 返回顶楼 | |


![ecsun的博客: [海鹏Blog]--{FaceYe开源} 用户头像](http://www.javaeye.com/upload/logo/user/36668/bcfaff38-8200-4288-88e6-f588c3138e36.gif?1196653519)


