看到没有任何答案并且这个问题看起来相当琐碎,我认为这里没有很多 Stripes 用户。所以这是我的两分钱:
这绝对是一个范围界定问题。<s:layout-component>
无权访问父页面的页面/循环范围。当您<jsp:include>
在<c:forEach>
. 循环变量在包含的代码片段中是不可访问的<jsp:include>
。但是在 JSP/JSTL 中,可以通过<jsp:param>
传递<jsp:include>
. 我快速浏览了 Stripes 文档,发现了一个<stripes:param>
. 看看是否有帮助。至少这里有一个基于 JSP/JSTL 的SSCCE来了解这个想法:
主.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
// Just for demo purposes. Do NOT use scriptlets in real work.
request.setAttribute("items", java.util.Arrays.asList("foo", "bar", "waa"));
%>
<c:forEach items="${items}" var="item">
<jsp:include page="include.jsp">
<jsp:param name="item" value="${item}" />
</jsp:include>
</c:forEach>
包含.jsp
${param.item}<br>
输出:
foo
bar
waa