2

我正在尝试在我的标签文件中使用以下代码段:

<%@ attribute name="content" fragment="true"%>
...
<c:set var="part" value="content"/>
<jsp:invoke fragment="${part}" var="partValue"/>
...

并且编译器给了我以下错误:

Syntax error, insert ") Statement" to complete IfStatement

所以据我了解,不允许在片段属性中使用 el 表达式。有人可以指出我在规范中的这个限制吗?或者如果我在运行时计算的片段名称,请给出如何调用片段内容的建议

4

1 回答 1

1

从技术上来说,fragment 属性并不是一个 rtexprvalue,这可以从 schema 中看出;这意味着它是在编译时评估的。

对于您要实现的目标,实际上只有一组非常有限的用例。很可能您想为标签文件提供多个片段,并让一些条件决定输出哪个标签。

<c:choose>
    <c:when test="${condition1}"><jsp:invoke fragment="frag1"/></c:when>
    <c:otherwise><jsp:invoke fragment="frag2"/></c:otherwise>
</c:choose>
于 2009-02-13T09:34:47.293 回答