看到没有任何答案和问题看起来相当微不足道,我不认为这里有很多Stripes用户。所以这里是我的两分钱:
这绝对是一个范围问题。 <s:layout-component>
无权访问父页面的页面/循环范围。当您在<c:forEach>
中执行<jsp:include>
时,JSP/JSTL中存在类似的问题。在<jsp:include>
包含的代码片段中,循环变量不可访问。但是在JSP/JSTL中可以通过沿着<jsp:include>
传递<jsp:param>
来解决。我快速浏览了Stripes文档,并发现了一个<stripes:param>
。看看是否有帮助。至少在这里是一个基于SSCCE拿到想法JSP/JSTL:
main.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>
include.jsp
${param.item}<br>
输出:
foo
bar
waa
这是一个很好的刺当然,但这里的问题是,当我调用布局时,该项目还不存在,所以我无法将它作为参数传递。 感谢您的支持。 我打算让这个问题没有特定的条纹,因为它只是一个范围问题,但我想不出一个什么时候可以用jsp:includes做同样的事情。 我怀疑这是不可能的,但如果任何人没有在没有首先评估页面上的表达式的情况下包含jsp的方式,请告诉我们。 – 2009-11-23 12:26:11