3

我想做这样的事情来调用 JSP 2.0 标记:

<mytags:foo abc="<%=def%>">
  <mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>

其中 Stringsdefjkl在 jsp 文件中定义较早。假设我的标签文件如下所示:

foo.tag

<%@ tag body-content="scriptless" %>
<%@ attribute name="abc" required="true" %>
<div class="${abc}">
  <jsp:doBody/>
</div>

bar.tag

<%@ tag body-content="scriptless" %>
<%@ attribute name="ghi" required="true" %>
<div>${ghi}</div>

我希望输出看起来像这样:

<div class="def">
<div>jkl</div>
</div>

(假设变量def和分别在调用 JSP 文件jkl中初始化为defjkl。)

外部标签的属性很好(<div class="def">),但内部标签失败。

这可能吗?我收到 jkl 无法解决的错误。

4

1 回答 1

4

注意body-content="scriptless"标签指令中的属性。这意味着被标签包围的主体不能包含脚本代码(<% %>东西)。您需要使用 EL。

如果我将 JSP 中的内容更改为:

  <c:set var="def" value="def"></c:set>
  <c:set var="jkl" value="jkl"></c:set>

  <mytags:foo abc="${def}">
      <mytags:bar ghi="${jkl}"/>
  </mytags:foo>

请注意,我需要添加 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

于 2009-02-10T20:41:13.413 回答