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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top