zoukankan      html  css  js  c++  java
  • jsp2.0的tag,jsp自定义标签,类似jsp动态include

    自定义标签好像现在已经很少使用

    我们自定义的tag类需要继承TagSupport类,相应的方法返回值意义如下。

    EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用
    EVAL_PAGE:继续处理页面,doEndTag()函数可用
    SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用
    SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用
    EVAL_BODY_TAG:已经废止,由EVAL_BODY_BUFFERED取代
    EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法

    jsp 2.0提供一种新的用法“jsp tag”

    只需要写XXX.tag文件,jsp页面中就可以引入

    <%@ taglib prefix="tags" tagdir="/WEB-INF/tags/XXX.tag" %>

    XXX.tag文件如下,这个tag文件实现的功能是:当前用户拥有权限时,才输出tag内部的html

    <%@ tag import="netid.right.util.SysrightUtil" %>
    <%@ tag import="netid.right.util.SysrightConstants" %>
    <%@ attribute name="rightUrl" description="rightUrl" %>
    <%

    String adminId
    = SysrightUtil.getCookieInfo(request, SysrightConstants.RIGHT_USERID);
    String rights
    = (String) SysrightConstants.RIGHT_MAP.get(adminId);
    if (rights != null && rights.contains(rightUrl)) {
    %>
    <jsp:doBody/>
    <%
    }
    %>


    下面是抄自JSP 2.0 tag files 文档中的一段例子
    原文http://www.softwaresummit.com/2005/speakers/BergmanJSP2.0TagFiles.pdf
    example.tag:
    <%@ tag dynamic-attributes="attrMap" body-content="scriptless"%>
    <%@ attribute name="bodyColor" required="true"%>
    <%@ attribute name="listopen" fragment="true" required="true"%>
    <%@ attribute name="listitem" fragment="true" required="true"%>
    <%@ attribute name="listclose" fragment="true" required="true"%>
    <%@ variable name-given="aKey" scope="NESTED%>
    <%@ variable name-given="aValue" scope="NESTED%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <jsp:invoke fragment="listopen" />
    <c:forEach var="attr" items="${attrMap}">
    <c:set var="aKey" value="${attr.key}"/>
    <c:set var="aValue" value="${attr.value}"/>
    <jsp:invoke fragment="listitem"/>
    </c:forEach>
    <jsp:invoke fragment="listclose"/>
    <FONT color="${bodyColor}"><jsp:doBody/></FONT>
    example.jsp:
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="my" tagdir="/WEB-INF/tags/" %>
    <my:example bodyColor="blue" first="1" second="2" third="3" fourth="4" fifth="5" sixth="6">
    <jsp:attribute name="listopen">
    <table border="1">
    <caption>Dynamic Attributes</caption>
    <tr><TH> Name</TH><TH> Value</TH></tr>
    </jsp:attribute>
    <jsp:attribute name="listclose">
    </table>
    </jsp:attribute>
    <jsp:attribute name="listitem">
    <tr>
    <td>${aKey}</td>
    <td>${aValue}</td>
    </tr>
    </jsp:attribute>
    <jsp:body>this is body text.</jsp:body>
    </my:example>
  • 相关阅读:
    VlanTrunk
    2015届互联网名企校招网址一览表
    The declared package does not match the expected package
    经典的算法网站
    Nutch
    JTable只要一双击就进入编辑状态,禁止的方法实现
    Java通过JDBC链接数据库,数据库中wen
    Cisco Packet Tracer的使用(一)
    Nutch安装的几个网址
    面试经
  • 原文地址:https://www.cnblogs.com/baibaluo/p/1855546.html
Copyright © 2011-2022 走看看