题
我想要做这样的事情来调用JSP 2.0标签:
<mytags:foo abc="<%=def%>">
<mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>
其中字符串def
和jkl
被定义在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>
(假定变量def
和jkl
被初始化以分别def
和jkl
,在调用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" %>
不隶属于 StackOverflow