如何在嵌套的jsp 2.0标签中将EL表达式作为参数?

时间:2009-02-10 20:03:09

标签: jsp jsp-tags

我想做类似的事情来调用JSP 2.0标记:

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

字符串defjkl在jsp文件中定义了earielr。假设我的标记文件如下所示:

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>

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

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

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

1 个答案:

答案 0 :(得分:4)

请注意tag指令中的body-content="scriptless"属性。这意味着标记包围的主体不能包含scriptlet代码(<% %>内容)。你需要使用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" %>