Могу ли я разбить цикл JAP Foreach с разметкой полос - PullRequest
0 голосов
/ 19 ноября 2009

Скажите, у меня есть следующее для каждого в определении макета полосы

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

Затем, когда я рендеринг, я делаю что-то вроде этого

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

Какой-либо компонент отображается перед размещением в макете, поэтому панель имеет нулевое значение и не работает. Есть ли способ, которым я могу построить целую страницу до разбора jsp?

1 Ответ

0 голосов
/ 20 ноября 2009

Видя отсутствие какого-либо ответа и вопрос выглядит довольно тривиально, я не думаю, что здесь много пользователей Stripes. так вот мои два цента:

Это определенно проблема с ограничениями. <s:layout-component> не имеет доступа к области просмотра страницы / цикла родительской страницы. Подобная проблема существует в JSP / JSTL, когда вы делаете <jsp:include> внутри <c:forEach>. Переменная цикла недоступна в фрагменте кода, включенном <jsp:include>. Но в JSP / JSTL это можно решить, передав <jsp:param> вдоль <jsp:include>. Я быстро просмотрел документацию по Stripes и обнаружил <stripes:param>. Посмотрите, поможет ли это. По крайней мере, вот идея, основанная на JSP / JSTL SSCCE , чтобы получить идею:

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
...