CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

如何在JSP页面中嵌入一个树型组件?

楼主mgb1234567(许文强)2005-11-03 15:19:49 在 Java / Web 开发 提问

诸位大哥:  
          小弟目前在做一个项目,需要在JSP页面中嵌入一个树型组件(类似Delphi中的TreeView控件),就像刚进入咱们csdn网站社区后,页面最左边的那个显示Java技术、.net技术、Web技术等的树型结构一样。哪位大哥如果知道,请告诉小弟一下源代码,小弟感激不尽,项目逼的实在紧,望大哥们帮助帮主,再次感谢。  
  若这里不方便,也可以发到小弟的邮箱:mgb1234567@sina.com 问题点数:100、回复次数:22Top

1 楼zhenyang2002(珍阳)回复于 2005-11-03 15:29:00 得分 0

javascriptTop

2 楼zhenyang2002(珍阳)回复于 2005-11-03 15:31:32 得分 0

你可以把   csdn   的树下下来看看,也可以在网上搜索Top

3 楼treeroot(旗鲁特)回复于 2005-11-03 15:38:48 得分 0

webtreeTop

4 楼liu_you(滴水藏海)回复于 2005-11-03 17:29:08 得分 0

得看你的组件是什么类型的了?有Weblogic那种,也有CSDN这种,等等.Top

5 楼ll42002(灰舌)回复于 2005-11-03 17:35:44 得分 0

好多,网上可以搜索一下。  
  简单的用javascript就可以。Top

6 楼mgb1234567(许文强)回复于 2005-11-03 17:35:47 得分 0

就是csdn这种。Top

7 楼mwsssxu(David Xu)回复于 2005-11-03 17:55:56 得分 0

网上有好多的呀.搜索菜单导航栏有好多啊!!Top

8 楼mgb1234567(许文强)回复于 2005-11-03 18:09:16 得分 0

能不能给段具体代码!Top

9 楼mgb1234567(许文强)回复于 2005-11-03 18:09:53 得分 0

我是用Tomcat做应用服务器!Top

10 楼zdsdiablo(十分钟年华老去)回复于 2005-11-03 18:11:48 得分 0

大部分都是用js实现的吧  
   
   
  Top

11 楼bob_thb(绿果)回复于 2005-11-03 18:19:38 得分 0

大哥,自己的工作还是要自己来做!  
  你上“中国站长站”看看有没有代下吧!Top

12 楼mgb1234567(许文强)回复于 2005-11-03 18:31:24 得分 0

真郁闷!半天了都没有得到一个可用的答案!Top

13 楼ljf_ljf(理论)回复于 2005-11-03 22:08:36 得分 100

你可以用JS来实现他的选择功能,用CSS来实现他的形状.如果你想要代码,我可以给你看.  
  *--------------------------------------------------|  
   
  |   dTree   2.05   |   www.destroydrop.com/javascript/tree/   |  
   
  |---------------------------------------------------|  
   
  |   Copyright   (c)   2002-2003   Geir   Landr?                             |  
   
  |                                                                                                       |  
   
  |   This   script   can   be   used   freely   as   long   as   all           |  
   
  |   copyright   messages   are   intact.                                         |  
   
  |                                                                                                       |  
   
  |   Updated:   17.04.2003                                                               |  
   
  |--------------------------------------------------*/  
   
   
   
  //   Node   object  
   
  function   Node(id,   pid,   name,   url,   title,   target,   icon,   iconOpen,   open)   {  
   
  this.id   =   id;  
   
  this.pid   =   pid;  
   
  this.name   =   name;  
   
  this.url   =   url;  
   
  this.title   =   title;  
   
  this.target   =   target;  
   
  this.icon   =   icon;  
   
  this.iconOpen   =   iconOpen;  
   
  this._io   =   open   ||   false;  
   
  this._is   =   false;  
   
  this._ls   =   false;  
   
  this._hc   =   false;  
   
  this._ai   =   0;  
   
  this._p;  
   
  };  
   
   
   
  //   Tree   object  
   
  function   dTree(objName)   {  
   
  this.config   =   {  
   
  target :   null,  
   
  folderLinks :   true,  
   
  useSelection :   true,  
   
  useCookies :   true,  
   
  useLines :   true,  
   
  useIcons :   true,  
   
  useStatusText :   false,  
   
  closeSameLevel :   false,  
   
  inOrder :   false  
   
  }  
   
  this.icon   =   {  
   
  root :   'img/base.gif',  
   
  folder :   'img/folder.gif',  
   
  folderOpen :   'img/folderopen.gif',  
   
  node :   'img/page.gif',  
   
  empty :   'img/empty.gif',  
   
  line :   'img/line.gif',  
   
  join :   'img/join.gif',  
   
  joinBottom :   'img/joinbottom.gif',  
   
  plus :   'img/plus.gif',  
   
  plusBottom :   'img/plusbottom.gif',  
   
  minus :   'img/minus.gif',  
   
  minusBottom :   'img/minusbottom.gif',  
   
  nlPlus :   'img/nolines_plus.gif',  
   
  nlMinus :   'img/nolines_minus.gif'  
   
  };  
   
  this.obj   =   objName;  
   
  this.aNodes   =   [];  
   
  this.aIndent   =   [];  
   
  this.root   =   new   Node(-1);  
   
  this.selectedNode   =   null;  
   
  this.selectedFound   =   false;  
   
  this.completed   =   false;  
   
  };  
   
   
   
  //   Adds   a   new   node   to   the   node   arrayTop

14 楼ljf_ljf(理论)回复于 2005-11-03 22:09:00 得分 0

dTree.prototype.add   =   function(id,   pid,   name,   url,   title,   target,   icon,   iconOpen,   open)   {  
   
  this.aNodes[this.aNodes.length]   =   new   Node(id,   pid,   name,   url,   title,   target,   icon,   iconOpen,   open);  
   
  };  
   
   
   
  //   Open/close   all   nodes  
   
  dTree.prototype.openAll   =   function()   {  
   
  this.oAll(true);  
   
  };  
   
  dTree.prototype.closeAll   =   function()   {  
   
  this.oAll(false);  
   
  };  
   
   
   
  //   Outputs   the   tree   to   the   page  
   
  dTree.prototype.toString   =   function()   {  
   
  var   str   =   '<div   class="dtree">\n';  
   
  if   (document.getElementById)   {  
   
  if   (this.config.useCookies)   this.selectedNode   =   this.getSelected();  
   
  str   +=   this.addNode(this.root);  
   
  }   else   str   +=   'Browser   not   supported.';  
   
  str   +=   '</div>';  
   
  if   (!this.selectedFound)   this.selectedNode   =   null;  
   
  this.completed   =   true;  
   
  return   str;  
   
  };  
   
   
   
  //   Creates   the   tree   structure  
   
  dTree.prototype.addNode   =   function(pNode)   {  
   
  var   str   =   '';  
   
  var   n=0;  
   
  if   (this.config.inOrder)   n   =   pNode._ai;  
   
  for   (n;   n<this.aNodes.length;   n++)   {  
   
  if   (this.aNodes[n].pid   ==   pNode.id)   {  
   
  var   cn   =   this.aNodes[n];  
   
  cn._p   =   pNode;  
   
  cn._ai   =   n;  
   
  this.setCS(cn);  
   
  if   (!cn.target   &&   this.config.target)   cn.target   =   this.config.target;  
   
  if   (cn._hc   &&   !cn._io   &&   this.config.useCookies)   cn._io   =   this.isOpen(cn.id);  
   
  if   (!this.config.folderLinks   &&   cn._hc)   cn.url   =   null;  
   
  if   (this.config.useSelection   &&   cn.id   ==   this.selectedNode   &&   !this.selectedFound)   {  
   
  cn._is   =   true;  
   
  this.selectedNode   =   n;  
   
  this.selectedFound   =   true;  
   
  }  
   
  str   +=   this.node(cn,   n);  
   
  if   (cn._ls)   break;  
   
  }  
   
  }  
   
  return   str;  
   
  };  
   
   
   
  //   Creates   the   node   icon,   url   and   text  
   
  dTree.prototype.node   =   function(node,   nodeId)   {  
   
  var   str   =   '<div   class="dTreeNode">'   +   this.indent(node,   nodeId);  
   
  if   (this.config.useIcons)   {  
   
  if   (!node.icon)   node.icon   =   (this.root.id   ==   node.pid)   ?   this.icon.root   :   ((node._hc)   ?   this.icon.folder   :   this.icon.node);  
   
  if   (!node.iconOpen)   node.iconOpen   =   (node._hc)   ?   this.icon.folderOpen   :   this.icon.node;  
   
  if   (this.root.id   ==   node.pid)   {  
   
  node.icon   =   this.icon.root;  
   
  node.iconOpen   =   this.icon.root;  
   
  }  
   
  str   +=   '<img   id="i'   +   this.obj   +   nodeId   +   '"   src="'   +   ((node._io)   ?   node.iconOpen   :   node.icon)   +   '"   alt=""   />';  
   
  }  
   
  if   (node.url)   {  
   
  str   +=   '<a   id="s'   +   this.obj   +   nodeId   +   '"   class="'   +   ((this.config.useSelection)   ?   ((node._is   ?   'nodeSel'   :   'node'))   :   'node')   +   '"   href="'   +   node.url   +   '"';  
   
  if   (node.title)   str   +=   '   title="'   +   node.title   +   '"';  
   
  if   (node.target)   str   +=   '   target="'   +   node.target   +   '"';  
   
  if   (this.config.useStatusText)   str   +=   '   onmouseover="window.status=\''   +   node.name   +   '\';return   true;"   onmouseout="window.status=\'\';return   true;"   ';  
   
  if   (this.config.useSelection   &&   ((node._hc   &&   this.config.folderLinks)   ||   !node._hc))  
   
  str   +=   '   onclick="javascript:   '   +   this.obj   +   '.s('   +   nodeId   +   ');"';  
   
  str   +=   '>';  
   
  }  
   
  else   if   ((!this.config.folderLinks   ||   !node.url)   &&   node._hc   &&   node.pid   !=   this.root.id)  
   
  str   +=   '<a   href="javascript:   '   +   this.obj   +   '.o('   +   nodeId   +   ');"   class="node">';  
   
  str   +=   node.name;  
   
  if   (node.url   ||   ((!this.config.folderLinks   ||   !node.url)   &&   node._hc))   str   +=   '</a>';  
   
  str   +=   '</div>';  
   
  if   (node._hc)   {  
   
  str   +=   '<div   id="d'   +   this.obj   +   nodeId   +   '"   class="clip"   style="display:'   +   ((this.root.id   ==   node.pid   ||   node._io)   ?   'block'   :   'none')   +   ';">';  
   
  str   +=   this.addNode(node);  
   
  str   +=   '</div>';  
   
  }  
   
  this.aIndent.pop();  
   
  return   str;  
   
  };Top

15 楼ljf_ljf(理论)回复于 2005-11-03 22:09:30 得分 0

//   Adds   the   empty   and   line   icons  
   
  dTree.prototype.indent   =   function(node,   nodeId)   {  
   
  var   str   =   '';  
   
  if   (this.root.id   !=   node.pid)   {  
   
  for   (var   n=0;   n<this.aIndent.length;   n++)  
   
  str   +=   '<img   src="'   +   (   (this.aIndent[n]   ==   1   &&   this.config.useLines)   ?   this.icon.line   :   this.icon.empty   )   +   '"   alt=""   />';  
   
  (node._ls)   ?   this.aIndent.push(0)   :   this.aIndent.push(1);  
   
  if   (node._hc)   {  
   
  str   +=   '<a   href="javascript:   '   +   this.obj   +   '.o('   +   nodeId   +   ');"><img   id="j'   +   this.obj   +   nodeId   +   '"   src="';  
   
  if   (!this.config.useLines)   str   +=   (node._io)   ?   this.icon.nlMinus   :   this.icon.nlPlus;  
   
  else   str   +=   (   (node._io)   ?   ((node._ls   &&   this.config.useLines)   ?   this.icon.minusBottom   :   this.icon.minus)   :   ((node._ls   &&   this.config.useLines)   ?   this.icon.plusBottom   :   this.icon.plus   )   );  
   
  str   +=   '"   alt=""   /></a>';  
   
  }   else   str   +=   '<img   src="'   +   (   (this.config.useLines)   ?   ((node._ls)   ?   this.icon.joinBottom   :   this.icon.join   )   :   this.icon.empty)   +   '"   alt=""   />';  
   
  }  
   
  return   str;  
   
  };  
   
   
   
  //   Checks   if   a   node   has   any   children   and   if   it   is   the   last   sibling  
   
  dTree.prototype.setCS   =   function(node)   {  
   
  var   lastId;  
   
  for   (var   n=0;   n<this.aNodes.length;   n++)   {  
   
  if   (this.aNodes[n].pid   ==   node.id)   node._hc   =   true;  
   
  if   (this.aNodes[n].pid   ==   node.pid)   lastId   =   this.aNodes[n].id;  
   
  }  
   
  if   (lastId==node.id)   node._ls   =   true;  
   
  };  
   
   
   
  //   Returns   the   selected   node  
   
  dTree.prototype.getSelected   =   function()   {  
   
  var   sn   =   this.getCookie('cs'   +   this.obj);  
   
  return   (sn)   ?   sn   :   null;  
   
  };  
   
   
   
  //   Highlights   the   selected   node  
   
  dTree.prototype.s   =   function(id)   {  
   
  if   (!this.config.useSelection)   return;  
   
  var   cn   =   this.aNodes[id];  
   
  if   (cn._hc   &&   !this.config.folderLinks)   return;  
   
  if   (this.selectedNode   !=   id)   {  
   
  if   (this.selectedNode   ||   this.selectedNode==0)   {  
   
  eOld   =   document.getElementById("s"   +   this.obj   +   this.selectedNode);  
   
  eOld.className   =   "node";  
   
  }  
   
  eNew   =   document.getElementById("s"   +   this.obj   +   id);  
   
  eNew.className   =   "nodeSel";  
   
  this.selectedNode   =   id;  
   
  if   (this.config.useCookies)   this.setCookie('cs'   +   this.obj,   cn.id);  
   
  }  
   
  };  
   
   
   
  //   Toggle   Open   or   close  
   
  dTree.prototype.o   =   function(id)   {  
   
  var   cn   =   this.aNodes[id];  
   
  this.nodeStatus(!cn._io,   id,   cn._ls);  
   
  cn._io   =   !cn._io;  
   
  if   (this.config.closeSameLevel)   this.closeLevel(cn);  
   
  if   (this.config.useCookies)   this.updateCookie();  
   
  };  
   
   
   
  //   Open   or   close   all   nodes  
   
  dTree.prototype.oAll   =   function(status)   {  
   
  for   (var   n=0;   n<this.aNodes.length;   n++)   {  
   
  if   (this.aNodes[n]._hc   &&   this.aNodes[n].pid   !=   this.root.id)   {  
   
  this.nodeStatus(status,   n,   this.aNodes[n]._ls)  
   
  this.aNodes[n]._io   =   status;  
   
  }  
   
  }  
   
  if   (this.config.useCookies)   this.updateCookie();  
   
  };  
   
   
   
  //   Opens   the   tree   to   a   specific   node  
   
  dTree.prototype.openTo   =   function(nId,   bSelect,   bFirst)   {  
   
  if   (!bFirst)   {  
   
  for   (var   n=0;   n<this.aNodes.length;   n++)   {  
   
  if   (this.aNodes[n].id   ==   nId)   {  
   
  nId=n;  
   
  break;  
   
  }  
   
  }  
   
  }  
   
  var   cn=this.aNodes[nId];  
   
  if   (cn.pid==this.root.id   ||   !cn._p)   return;  
   
  cn._io   =   true;  
   
  cn._is   =   bSelect;  
   
  if   (this.completed   &&   cn._hc)   this.nodeStatus(true,   cn._ai,   cn._ls);  
   
  if   (this.completed   &&   bSelect)   this.s(cn._ai);  
   
  else   if   (bSelect)   this._sn=cn._ai;  
   
  this.openTo(cn._p._ai,   false,   true);  
   
  };  
   
   
   
  //   Closes   all   nodes   on   the   same   level   as   certain   node  
   
  dTree.prototype.closeLevel   =   function(node)   {  
   
  for   (var   n=0;   n<this.aNodes.length;   n++)   {  
   
  if   (this.aNodes[n].pid   ==   node.pid   &&   this.aNodes[n].id   !=   node.id   &&   this.aNodes[n]._hc)   {  
   
  this.nodeStatus(false,   n,   this.aNodes[n]._ls);  
   
  this.aNodes[n]._io   =   false;  
   
  this.closeAllChildren(this.aNodes[n]);  
   
  }  
   
  }  
   
  }  
   
   
   
  //   Closes   all   children   of   a   node  
   
  dTree.prototype.closeAllChildren   =   function(node)   {  
   
  for   (var   n=0;   n<this.aNodes.length;   n++)   {  
   
  if   (this.aNodes[n].pid   ==   node.id   &&   this.aNodes[n]._hc)   {  
   
  if   (this.aNodes[n]._io)   this.nodeStatus(false,   n,   this.aNodes[n]._ls);  
   
  this.aNodes[n]._io   =   false;  
   
  this.closeAllChildren(this.aNodes[n]);  
   
  }  
   
  }  
   
  }  
   
   
   
  //   Change   the   status   of   a   node(open   or   closed)  
   
  dTree.prototype.nodeStatus   =   function(status,   id,   bottom)   {  
   
  eDiv =   document.getElementById('d'   +   this.obj   +   id);  
   
  eJoin =   document.getElementById('j'   +   this.obj   +   id);  
   
  if   (this.config.useIcons)   {  
   
  eIcon =   document.getElementById('i'   +   this.obj   +   id);  
   
  eIcon.src   =   (status)   ?   this.aNodes[id].iconOpen   :   this.aNodes[id].icon;  
   
  }  
   
  eJoin.src   =   (this.config.useLines)?  
   
  ((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):  
   
  ((status)?this.icon.nlMinus:this.icon.nlPlus);  
   
  eDiv.style.display   =   (status)   ?   'block':   'none';  
   
  };  
   
   
   
   
   
  //   [Cookie]   Clears   a   cookie  
   
  dTree.prototype.clearCookie   =   function()   {  
   
  var   now   =   new   Date();  
   
  var   yesterday   =   new   Date(now.getTime()   -   1000   *   60   *   60   *   24);  
   
  this.setCookie('co'+this.obj,   'cookieValue',   yesterday);  
   
  this.setCookie('cs'+this.obj,   'cookieValue',   yesterday);  
   
  };  
   
   
   
  //   [Cookie]   Sets   value   in   a   cookie  
   
  dTree.prototype.setCookie   =   function(cookieName,   cookieValue,   expires,   path,   domain,   secure)   {  
   
  document.cookie   =  
   
  escape(cookieName)   +   '='   +   escape(cookieValue)  
   
  +   (expires   ?   ';   expires='   +   expires.toGMTString()   :   '')  
   
  +   (path   ?   ';   path='   +   path   :   '')  
   
  +   (domain   ?   ';   domain='   +   domain   :   '')  
   
  +   (secure   ?   ';   secure'   :   '');  
   
  };  
   
   
   
  //   [Cookie]   Gets   a   value   from   a   cookie  
   
  dTree.prototype.getCookie   =   function(cookieName)   {  
   
  var   cookieValue   =   '';  
   
  var   posName   =   document.cookie.indexOf(escape(cookieName)   +   '=');  
   
  if   (posName   !=   -1)   {  
   
  var   posValue   =   posName   +   (escape(cookieName)   +   '=').length;  
   
  var   endPos   =   document.cookie.indexOf(';',   posValue);  
   
  if   (endPos   !=   -1)   cookieValue   =   unescape(document.cookie.substring(posValue,   endPos));  
   
  else   cookieValue   =   unescape(document.cookie.substring(posValue));  
   
  }  
   
  return   (cookieValue);  
   
  };  
   
   
   
  //   [Cookie]   Returns   ids   of   open   nodes   as   a   string  
   
  dTree.prototype.updateCookie   =   function()   {  
   
  var   str   =   '';  
   
  for   (var   n=0;   n<this.aNodes.length;   n++)   {  
   
  if   (this.aNodes[n]._io   &&   this.aNodes[n].pid   !=   this.root.id)   {  
   
  if   (str)   str   +=   '.';  
   
  str   +=   this.aNodes[n].id;  
   
  }  
   
  }  
   
  this.setCookie('co'   +   this.obj,   str);  
   
  };  
   
   
   
  //   [Cookie]   Checks   if   a   node   id   is   in   a   cookie  
   
  dTree.prototype.isOpen   =   function(id)   {  
   
  var   aOpen   =   this.getCookie('co'   +   this.obj).split('.');  
   
  for   (var   n=0;   n<aOpen.length;   n++)  
   
  if   (aOpen[n]   ==   id)   return   true;  
   
  return   false;  
   
  };  
   
   
   
  //   If   Push   and   pop   is   not   implemented   by   the   browser  
   
  if   (!Array.prototype.push)   {  
   
  Array.prototype.push   =   function   array_push()   {  
   
  for(var   i=0;i<arguments.length;i++)  
   
  this[this.length]=arguments[i];  
   
  return   this.length;  
   
  }  
   
  };  
   
  if   (!Array.prototype.pop)   {  
   
  Array.prototype.pop   =   function   array_pop()   {  
   
  lastElement   =   this[this.length-1];  
   
  this.length   =   Math.max(this.length-1,0);  
   
  return   lastElement;  
   
  }  
   
  };Top

16 楼YZ815(♂匆匆过客√)回复于 2005-11-03 22:35:59 得分 0

这种树SCRIP很容易实现,关键是怎么才能实现动态加载树的内容?Top

17 楼mgb1234567(许文强)回复于 2005-11-03 22:51:02 得分 0

upTop

18 楼mgb1234567(许文强)回复于 2005-11-03 23:01:09 得分 0

这种树SCRIP很容易实现,关键是怎么才能实现动态加载树的内容?  
  ---------------------------------------------------------------------------  
  是啊,怎么动态加载树的内容啊?我就是想从数据库中动态加载树的内容。Top

19 楼mgb1234567(许文强)回复于 2005-11-04 10:28:19 得分 0

哪位能给个动态加载树的例子。Top

20 楼loveyousomuch(★Allen★)回复于 2005-11-04 11:03:37 得分 0

用struts-menu好了Top

21 楼mgb1234567(许文强)回复于 2005-11-04 22:47:56 得分 0

upTop

22 楼tttick(秉承一贯懒散的生活方式与严谨的工作态度¢)CodinG)回复于 2005-11-05 01:15:20 得分 0

用XML也可以实现啊Top

相关问题

  • jsp页面能直接嵌入asp页面吗?
  • 在JSP页面中,能否嵌入ActiveX控件
  • 关于jsp页面嵌入activex的问题
  • c#页面嵌入!!
  • 用struts的validate组件时,在jsp页面出现javascript的源码??
  • JSP页面中的javascript嵌入JSP代码的问题,JSP代码是先执行的吗?
  • 嵌入页面的问题
  • 视频组件(嵌入在IE中)
  • 如何在DBGrid组件中嵌入其他组件
  • iframe的问题,在一个<td>中嵌入一个jsp页面,有时间显示数据有问题!

关键词

  • 组件
  • 页面
  • csdn
  • 小弟
  • 大哥
  • 树型
  • 好多

得分解答快速导航

  • 帖主:mgb1234567
  • ljf_ljf

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo