Я знаю, что очень поздно отвечать на этот вопрос, но могу быть полезен тем, кто застрял в этой ситуации и ищет ответы.
Мой ответ будет работать, если вы не обязаны использовать тег <jsp: include>
для включения jsp. Вместо этого вы можете использовать <%@include file="/WEB-INF/views/path-to-jsp.jsp" %>
для импорта другого JSP на страницу, и эта страница может использовать вашу переменную цикла тега <c:forEach>
.
Например.
<c:forEach items="${users}" var="user">
<%@include file="/WEB-INF/views/path-to-jsp.jsp" %> <!-- here ${user} can be use in importing jsp file. -->
</c:forEach>
Это работает, потому что тег <%@include file="" %>
вставит содержимое именованного файла в JSP, содержащий тег, как если бы он был скопирован и вставлен. Это делается до анализа содержимого включенного файла, а не во время анализа содержащего JSP. Это больше похоже на директиву C #include, где во время предварительной обработки включаемый файл «вставляется» на место перед компиляцией файла. После того, как содержимое включено, оно оценивается в том же контексте и, следовательно, с теми же доступами и ограничениями, которые были бы у включенного кода, если бы содержимое было просто напечатано на месте.
Принимая во внимание, что тег <jsp:include page=""/>
ведет себя по-другому, поскольку результат рендеринга указанной страницы вводится в содержащий JSP в точке тега. Это делается путем отправки запрошенной страницы в тот же контейнер в качестве отдельного запроса на отрисовку и получения результатов, а не содержимого файла. Этот запрос выполняется в собственном контексте, то есть он не использует ту же информацию о странице, что и страница, содержащая тег. Это может быть удобно, особенно если включенный контент может, например, иметь конфликтующие переменные.
person
Vijay Shegokar
schedule
15.06.2017