JSP自定义标签与树导航的使用

来源:互联网 发布:广州恒大淘宝队卡帅 编辑:程序博客网 时间:2024/06/02 12:16

 

在main.jsp中,导入dtree.js和dtree.css,直接使用自定义标签<s:TreeChk />,代码如下:

<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ include file="/inc/head.inc"%>

<html>
 <head>
  <title>left tree</title>
  <link rel="stylesheet" href="css/dtree.css" type="text/css" />
  <script>
   contextPath = "<%=contextPath%>/";
  </script>
  <script type="text/javascript" src="js/dtree.js"></script>
 </head>

 <body style="padding:0px;">
  <table cellpadding=0 cellspacing=0 border=0 width=100% height=100%>
   <tr>
    <td width=195 style="border-right:#e3e3e3 solid 2px; font-size:12px; background:#FFFFFF; color:#000000;" valign=top>
     <div style="width:195px; height:100%; overflow:auto; background:#fff; border-top:#e3e3e3 solid 2px;">
                      <p>
       <a href="javascript: d.openAll();">展开</a> | <a href="javascript: d.closeAll();">折叠</a>
      </p>
                      <s:TreeChk />
     </div>
    </td>
    
    <td valign=top>
     <iframe framespacing="0" frameborder="0" Scrolling="auto" width=100% height=100% name="mywin" id="IFRM_LEFT_BOTTOM" src="new.html"></iframe>
    </td>
   </tr>
  </table>
  
 </body>
 
</html>

 

其中head.inc中,导入标签<%@ taglib uri="/WEB-INF/commons" prefix="s" %>
,代码如下:

<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ taglib uri="/WEB-INF/commons" prefix="s" %>
<%
 String contextPath = request.getContextPath();
%>
<script type="text/javascript" language="javascript">
 var contextPath = "<%= contextPath %>";
</script>

 

 

在/web-inf/commons下,定义了改标签,如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
        "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
 <tlibversion>1.0</tlibversion>
 <jspversion>1.2</jspversion>
 <shortname></shortname>
 <tag>
  <name>TreeChk</name>
  <tagclass>
   common.tree.TreeChkTag
  </tagclass>
  <bodycontent>JSP</bodycontent>
  <info>Check if the user have the audit's purview.</info>
 </tag>
</taglib>

 

 

在该tld文件中,定义了标签所指定的class文件,common.tree.TreeChkTag

 

TreeChkTag.java的内容如下:

package common.tree;

import javax.servlet.jsp.tagext.TagSupport;

/**
 * Title: 系统菜单树自定义标签 Description:系统菜单树显示(系统左侧)
 */
public class TreeChkTag extends TagSupport {

 public int doStartTag() {
  return SKIP_BODY;
 }

 public int doEndTag() {
  try {
   pageContext.getOut().print("<script type=/"text/javascript/"> /n");
   pageContext.getOut().print(" target = /"mywin/";");
   pageContext.getOut().print(" d = new dTree('d');");

   StringBuffer s = new StringBuffer();
   //这是顶级菜单
   s.append(" d.add('").append("1").append("',").append("-1");
   s.append(",'").append("顶级菜单").append("','");
   s.append("');");

   //这个是一级菜单
   s.append(" d.add('").append("10").append("',").append("1");
   s.append(",'").append("一级菜单").append("','");
   s.append("');");

   //这个是二级菜单
   s.append(" d.add('").append("100").append("',").append("10");
   s.append(",'").append("二级菜单").append("','");
   s.append("http://www.baidu.com").append("','',target);");
   
   //这个是另一个一级菜单,带链接
   s.append(" d.add('").append("11").append("',").append("1");
   s.append(",'").append("一级菜单").append("','");
   s.append("http://www.google.com").append("','',target);");
   
   //这个是另一个二级菜单,带链接
   s.append(" d.add('").append("101").append("',").append("11");
   s.append(",'").append("二级菜单").append("','");
   s.append("http://www.qq.com").append("','',target);");
   
   pageContext.getOut().print(s.toString());
   pageContext.getOut().print("document.write(d);</script>");

  } catch (Exception e) {
   return SKIP_BODY;
  }

  return EVAL_PAGE;
 }
}

 

 

此外,还需要在项目下的web.xml文件中引入该标签,具体内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app >
  <taglib id="TagLibRef_1101353531375">
        <taglib-uri>/WEB-INF/commons</taglib-uri>
        <taglib-location>
            /WEB-INF/custom-tld/commons.tld
        </taglib-location>
    </taglib>
</web-app>

 

 

重在于自定义标签的使用,具体dtree的内容就不贴了。