1

我有一个简单的 .jsp 文件,它使用<c:import url="...jsp">作为页眉和页脚。

对于标题,它工作得很好:在我c:import的header.jsp中进行了一些 ${...} EL 替换,并且每次用户重新加载页面时,一切都很好。

然而,在页脚中有一些我没有得到的东西:我试图将一些 JSTL 放在我的footer.jsp 中,但它不起作用。

我的 footer.jsp 中的标签不是评估 JSTL,而是提供给浏览器。

例如,如果我要求从 Chrome 查看页面源代码,我会看到:

<div>
    <c:if test="false">
       ...
    </c:if>
</div>

header.jsp 和 footer.jsp 都使用c:import 导入。EL 替换如何工作,而 JSTL 标签却不行?

如果我需要“包含”而不是“导入”,那么我有两个问题:

  • 我可以使用 JSTL “包含”吗?如果可以,如何?

  • 当我在 JSTL 标记不起作用时执行c:import时,EL 替换如何仍然发生?

4

1 回答 1

1

您确实应该使用<%@ include file="footer.jsp" %>- 然后所有 EL 都将得到解决(标题也是如此)

<c:import />评估目标资源,然后将其包含在页面中。如果您的页脚未正确声明 EL 表达式解析(在旧版本的 JSP 中默认情况下未启用),则包含的结果将包含<c:标签。

于 2012-04-16T14:37:46.313 回答