Puedo romper un bucle foreach JSP con rayas diseños
Pregunta
Decir que tengo lo siguiente para cada uno en una definición rayas diseño
<c:foreach items="${foo}" var="bar" >
<s:layout-component name="whatever" />
</c:foreach>
A continuación, cuando me hacen que hago algo como esto
<s:layout-component name="whatever">
//Do something with bar
</s:layout-component>
El componente se hace lo que sea antes de ser colocado en el diseño de modo bar es nula y se produce un error. ¿Hay alguna manera de construir una página entera antes de que se analice el JSP?
Solución
Al ver la ausencia de respuesta y la pregunta mirando bastante trivial, no creo que hay muchos usuarios Rayas aquí. así que aquí están mis dos centavos:
Este es sin duda un problema de alcance. la <s:layout-component>
no tiene acceso al ámbito de la página / bucle de la página principal. problema similar existe en JSP / JSTL cuando se hace una <jsp:include>
dentro de un <c:forEach>
. La variable de bucle es inaccesible en el fragmento de código incluido por <jsp:include>
. Pero en JSP / JSTL que podrían resolverse haciendo pasar una <jsp:param>
lo largo de la <jsp:include>
. Me echó un vistazo rápido en la documentación rayas y descubrí un <stripes:param>
. Ver si eso ayuda. Por lo menos aquí hay un JSP / JSTL basado SSCCE para obtener la idea:
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>
salida:
foo
bar
waa