我想创建一个可以像这样使用的自定义JSP标记:
<mytags:myTag>
<p>My content!</p>
</mytags:myTag>
在标签中,我想像处理任何其他属性一样处理正文的内容。因此,标签定义看起来像这样 - 但是主体不是属性,而是某些东西其他。
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>
显然,像<jsp:doBody/>
或<jsp:invoke fragment="body" />
之类的东西对我没用。此外,为此目的创建Java标记似乎有点过于复杂。
答案 0 :(得分:1)
可以使用<jsp:dobody>
操作通过var
属性捕获正文内容,如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>