3

我想创建一个可以像这样使用的自定义 JSP 标记:

<mytags:myTag>
    <p>My content!</p>
</mytags:myTag>

在标签中,我想处理正文的内容,就像我使用任何其他属性一样。所以,标签定义看起来像这样——但主体不是属性而是别的东西。

mytag.标签:

<%@taglib prefix="mytags" tagdir="/WEB-INF/tags/mytags" %>
<%@attribute name="body" required="true"%>

<div>
  <c:if test="${fn:contains(body, 'test')}">
    <p>Found test string<p>
  </c:if>
</div>

显然,类似<jsp:doBody/><jsp:invoke fragment="body" />不会帮助我的东西。此外,为此目的创建 Java 标记似乎有点过于复杂。

4

1 回答 1

1

如本文<jsp:dobody>所示,可以通过其var属性使用操作来捕获正文内容。正文内容将作为属性添加到您的标记文件中,并且可以通过表达式访问。pageContext

mytag.tag

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<jsp:doBody var="body"/>
<div>
    <c:if test="${ fn:contains(body, 'test') }">
        <p>Found test string</p>
    </c:if>
</div>
于 2014-05-24T20:51:50.873 回答