⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.jsp

📁 部门结构树
💻 JSP
字号:
<%@ page import="com.jenkov.prizetags.tree.impl.TreeNode,
                 com.jenkov.prizetags.tree.impl.Tree,
                 com.jenkov.prizetags.tree.itf.*"%>
<%@ taglib uri="/WEB-INF/treetag.tld" prefix="tree" %>
<%@ taglib uri="/WEB-INF/requesttags.tld" prefix="request" %>
<%
    //this Java code should be replaced by code that builds the tree from file system, xml document,
    //database etc. It could also be moved to a Struts action or Spring controller.
    if(session.getAttribute("tree.model") == null){

        //creating a simple tree model instance
        ITree       tree          = new Tree();
        tree.setSingleSelectionMode(true);

        //adding server side event listeners to the tree model instance
        tree.addExpandListener(new IExpandListener(){
           public void nodeExpanded(ITreeNode node, ITree tree){
               System.out.println("node " + node.getName() + " was expanded");
           }
        });

        tree.addCollapseListener(new ICollapseListener(){
           public void nodeCollapsed(ITreeNode node, ITree tree){
               System.out.println("node " + node.getName() + " was collapsed");
           }
        });

        tree.addSelectListener(new ISelectListener(){
            public void nodeSelected(ITreeNode node, ITree tree){
                System.out.println("node " + node.getName() + " was active");
            }
        });

        tree.addUnSelectListener(new IUnSelectListener(){
            public void nodeUnselected(ITreeNode node, ITree tree){
                System.out.println("node " + node.getName() + " was unselected");
            }
        });

        //adding tree nodes in a tree structure to the tree model instance.
        ITreeNode   movies        = new TreeNode("moviesId"     , "Movies"       , "movies");
        ITreeNode   thrillers     = new TreeNode("thrillersId"  , "Thrillers"    , "thrillers");
        ITreeNode   thrillersNew  = new TreeNode("newThrillId"  , "New Thrillers", "newThrill");
        ITreeNode   thrillersOld  = new TreeNode("oldThrillId"  , "Old Thrillers", "oldThrill");
        ITreeNode   fantasy       = new TreeNode("fantasyId"    , "Fantasy"      , "fantasy");
        ITreeNode   comedy        = new TreeNode("comedyId"     , "Comedies"     , "comedies");
        ITreeNode   cartoons      = new TreeNode("cartoonsId"   , "Cartoons"     , "cartoons");
        ITreeNode   comedySub     = new TreeNode("comedySubId"    , "Comedy Sub"   , "comedies");
        ITreeNode   comedySubSub  = new TreeNode("comedySubSubId" , "Comedy Sub Sub","comedies");

        ITreeNode   basicInstinct = new TreeNode("basicInstinctId"  , "Basic Instinct"   , "thriller");
        ITreeNode   theFirm       = new TreeNode("theFirmId"        , "The Firm"         , "thriller");
        ITreeNode   lordOfTheRings= new TreeNode("lordOfTheRingsId" , "Lord of The Rings", "fantasy");
        ITreeNode   dumbNDumber   = new TreeNode("dumbNDumberId"    , "Dumb'n Dumber"    , "comedy");
        ITreeNode   lionKing      = new TreeNode("lionKingId"       , "Lion King"        , "cartoon");
        ITreeNode   snowWhite     = new TreeNode("snowWhiteId"      , "Snow White"       , "cartoon");

        //Tool Tips on some nodes...
        movies.setToolTip("Check out these hot thrillers & comedies!");

        movies.addChild(thrillers);
        movies.addChild(fantasy);
        movies.addChild(comedy);
        movies.addChild(cartoons);

        thrillers.addChild(thrillersNew);
        thrillers.addChild(thrillersOld);
        thrillersNew.addChild(theFirm);
        thrillersOld.addChild(basicInstinct);
        fantasy  .addChild(lordOfTheRings);
        cartoons .addChild(lionKing);
        cartoons .addChild(snowWhite);
        //comedy   .addChild(dumbNDumber);
        comedy   .addChild(comedySub);
        comedySub.addChild(comedySubSub);

        tree.setRoot(movies);
        tree.expand(movies.getId());
        tree.expand(cartoons.getId());

        tree.select(fantasy.getId());

        //attaching an object to a tree node. The attached object
        //can also be used when generating the HTML for the tree.
        thrillers.setObject("Attached Object");

        //storing the tree model instance in the session.
        //this is where the tags get the tree model from later.
        session.setAttribute("tree.model", tree);
    }
%>
<html>
<head>
    <link rel="stylesheet" href="/prizetagsdemo/stylesheet.css" type="text/css">
</head>

<body>
<%-- adding client side event listeners.
     If your tree is big, and slow to generate
     it can be a good idea to move these event listeners to the top of the JSP page,
     so they are the first thing run. That way, if you use the event listeners to
     reload another frame, like they do here, the other frame will be asked to
     reload itself as soon as possible. This will make the application feel faster.
     Otherwise the frame-reload command is not executed until after the whole
     tree is generated, making the frame-reload feel slower.
--%>
<tree:onExpand>
  <script>top.window.main.location.href="detail.jsp?expand=<tree:expandedNodeId />"; </script>
</tree:onExpand>

<tree:onCollapse>
  <script>top.window.main.location.href="detail.jsp?collapse=<tree:collapsedNodeId />"; </script>
</tree:onCollapse>

<tree:onSelect>
  <script>top.window.main.location.href="detail.jsp?select=<tree:selectedNodeId />"; </script>
</tree:onSelect>

<tree:onUnselect>
  <script>top.window.main.location.href="detail.jsp?unselect=<tree:unselectedNodeId />"; </script>
</tree:onUnselect>



<%-- Generating the Tree HTML --%>
<table cellspacing="0" cellpadding="0" border="0">
<tree:tree tree="tree.model" node="tree.node" >
    <tr><td
    ><table cellspacing="0" cellpadding="0" border="0">
    <tr><td><tree:nodeIndent    node="tree.node" indentationType="type"><tree:nodeIndentVerticalLine indentationType="type" ><img src="../images/verticalLine.gif"></tree:nodeIndentVerticalLine><tree:nodeIndentBlankSpace   indentationType="type" ><img src="../images/blankSpace.gif"></tree:nodeIndentBlankSpace></tree:nodeIndent></td>
    <tree:nodeMatch    node="tree.node" expanded="false" hasChildren="true"  isLastChild="false"><td><a href="<request:requestUri/>?expand=<tree:nodeId node="tree.node"/>"><img src="../images/collapsedMidNode.gif" border="0"></a><img src="../images/closedFolder.gif"></td></tree:nodeMatch>
    <tree:nodeMatch    node="tree.node" expanded="true"  hasChildren="true"  isLastChild="false"><td><a href="<request:requestUri/>?collapse=<tree:nodeId node="tree.node"/>"><img src="../images/expandedMidNode.gif"  border="0"></a><img src="../images/openFolder.gif"></td></tree:nodeMatch>
    <tree:nodeMatch    node="tree.node" expanded="false" hasChildren="true"  isLastChild="true" ><td><a href="<request:requestUri/>?expand=<tree:nodeId node="tree.node"/>"><img src="../images/collapsedLastNode.gif"  border="0"></a><img src="../images/closedFolder.gif"></td></tree:nodeMatch>
    <tree:nodeMatch    node="tree.node" expanded="true"  hasChildren="true"  isLastChild="true" ><td><a href="<request:requestUri/>?collapse=<tree:nodeId node="tree.node"/>"><img src="../images/expandedLastNode.gif" border="0"></a><img src="../images/openFolder.gif"></td></tree:nodeMatch>
    <tree:nodeMatch    node="tree.node" expanded="false" hasChildren="false" isLastChild="false"><td><img src="../images/noChildrenMidNode.gif"><img src="../images/nonFolder.gif"></td></tree:nodeMatch>
    <tree:nodeMatch    node="tree.node" expanded="false" hasChildren="false" isLastChild="true" ><td><img src="../images/noChildrenLastNode.gif"><img src="../images/nonFolder.gif"></td></tree:nodeMatch>

    <td valign="top">
    <tree:nodeMatch node="tree.node" selected="true"><span style="Font-Size: 12px;"><b><tree:nodeName      node="tree.node"/></b></span></tree:nodeMatch>
    <tree:nodeMatch node="tree.node" selected="false"><a title="<tree:nodeToolTip node="tree.node" />" href="<request:requestUri/>?select=<tree:nodeId node="tree.node"/>"><span style="Font-Size: 12px;"><tree:nodeName      node="tree.node"/></span></a></tree:nodeMatch>

    <%-- using the attached object of a node.
         The node object is now available in the http request attribute with the
         name given in the detachedObject attribute. You can then use the JSTL
         or Struts <bean:write id="theNodeObject" /> etc. tags to display information from the attached
         object.
    --%>
    <tree:detachNodeObject node="tree.node" detachedObject="theNodeObject"/>
    <%  if(request.getAttribute("theNodeObject") != null){
           out.print(request.getAttribute("theNodeObject"));
        }
    %>

    </td>
    </tr>
    </table></td></tr>
</tree:tree>
</table>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -