【问题标题】:How to store the body of a JSTL custom tag into a variable?如何将 JSTL 自定义标签的主体存储到变量中?
【发布时间】:2013-04-05 10:45:49
【问题描述】:

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

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

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

mytag.tag:

<%@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>

显然,&lt;jsp:doBody/&gt;&lt;jsp:invoke fragment="body" /&gt; 之类的东西对我没有帮助。此外,为此目的创建 Java 标记似乎有点过于复杂。

【问题讨论】:

    标签: jsp jstl jsp-tags


    【解决方案1】:

    可以通过var 属性使用&lt;jsp:dobody&gt; 操作捕获正文内容,如this 文章中所示。正文内容将作为属性添加到标记文件的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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      相关资源
      最近更新 更多