我想要做这样的事情来调用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被初始化以分别defjkl,在调用JSP文件。)

外标签获取其属性就好(<div class="def">),但内层一个失败。

这是可能的?我得到的是JKL不能得到解决的错误。

有帮助吗?

解决方案

请注意在标签指令的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" %>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top