Puis-je briser une boucle foreach jsp avec des configurations de bandes
Question
Dire que je donne les résultats suivants pour chaque dans une définition de mise en page des bandes
<c:foreach items="${foo}" var="bar" >
<s:layout-component name="whatever" />
</c:foreach>
Alors quand je rends que je fais quelque chose comme ceci
<s:layout-component name="whatever">
//Do something with bar
</s:layout-component>
Le composant quel que soit rendu avant d'être placé dans la configuration de sorte bar est nul et il échoue. Est-il possible que je peux construire une page entière avant la jsp est analysée?
La solution
En voyant l'absence de toute réponse et la question à la recherche assez trivial, je ne pense pas qu'il ya beaucoup de Stripes utilisateurs ici. donc voici mes deux cents:
Ceci est certainement un problème de cadrage. le <s:layout-component>
n'a pas accès à la portée la page / boucle de la page parent. Des problèmes similaires existent dans JSP / JSTL lorsque vous effectuez une <jsp:include>
dans un <c:forEach>
. La variable de boucle est inaccessible dans l'extrait de code inclus par <jsp:include>
. Mais en JSP / JSTL qui pourraient être résolus en passant un <jsp:param>
le long de la <jsp:include>
. Je pris un coup d'œil dans la documentation Stripes et j'ai découvert un <stripes:param>
. Voir si cela aide. Au moins ici est une base JSP / JSTL SSCCE pour obtenir l'idée:
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>
sortie:
foo
bar
waa