2009-11-19 3 views
0

Dire que je donne les résultats suivants pour chacun dans une mise en page des bandes définitionPuis-je briser une boucle foreach jsp avec des configurations de bandes

<c:foreach items="${foo}" var="bar" > 
    <s:layout-component name="whatever" /> 
</c:foreach> 

Puis, quand je rends je fais quelque chose comme ça

<s:layout-component name="whatever"> 
    //Do something with bar 
</s:layout-component> 

Le Quel que soit le composant rendu avant d'être placé dans la disposition, bar est nul et échoue. Est-il possible de construire une page entière avant que le jsp soit analysé?

Répondre

0

Voyant l'absence de réponse et la question paraissant assez triviale, je ne pense pas qu'il y ait beaucoup d'utilisateurs de Stripes ici. alors voici mes deux cents:

Ceci est certainement un problème de portée. le <s:layout-component> n'a pas accès à la page/loop scope de la page parent. Problème similaire existe dans JSP/JSTL lorsque vous faites un <jsp:include> à l'intérieur d'un <c:forEach>. La variable de boucle est inaccessible dans l'extrait de code inclus par <jsp:include>. Mais dans JSP/JSTL qui pourrait être résolu en passant un <jsp:param> le long de la <jsp:include>. J'ai jeté un coup d'oeil rapide dans la documentation de Stripes et j'ai découvert un <stripes:param>. Voyez 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 
+0

C'est un bon coup de couteau c'est sûr, mais le problème ici est qu'au moment où j'appelle la mise en page, l'objet n'existe pas encore, donc je ne peux pas le passer en paramètre. Merci d'avoir essayé. J'allais rendre cette question non spécifique aux rayures car c'est juste une question de portée mais je ne peux pas penser à un moment où je ferais quelque chose d'équivalent avec jsp: includes. Je suppose que ce n'est tout simplement pas possible, mais si quelqu'un ne parvient pas à inclure jsp sans d'abord évaluer les expressions sur la page, tenez-nous au courant. –

Questions connexes