Ответ 1
Это ожидаемое поведение.
Когда вы используете <jsp:include>
, он выполняет цель в отдельном запросе, а затем включает вывод в включенном JSP. Он не включает источник включенной цели, он включает в себя выход. Средства, с помощью которых генерируется этот целевой результат, теряются.
Чтобы сделать то, что вы пытаетесь сделать, вам нужно использовать директивы <% include %>
:
<%@ include file="/WEB-INF/jsp/include/header.jsp" %>
Это наложит литеральный текст header.jsp
на вашу страницу. Конечно, при этом вы больше не можете передавать ему параметры, поэтому вам нужно установить это как атрибут контекста страницы (например, используя <c:set>
... но, конечно, вы не можете использовать <c:set>
до тех пор, пока вы сделали свое включение...).
По сути, это действительно не стоит хлопот. Декларации Taglib являются раздражающим шаблоном, но трудно избавиться.