私はストライプのレイアウトとJSPのforeachループを破ることができます

StackOverflow https://stackoverflow.com/questions/1762004

  •  21-09-2019
  •  | 
  •  

質問

私はストライプのレイアウト定義でそれぞれに次きたと言います
<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が解析される前に、私は、ページ全体を構築することができます方法はありますか?

役に立ちましたか?

解決

些細な探して任意の質問回答の有無を見て、私は多くのストライプのユーザーが出てここにあるとは思いません。だからここに私の2セントがあります:

これは間違いなく、スコープの問題です。 <s:layout-component>は、親ページのページ/ループ範囲にアクセスすることはできません。あなたは<jsp:include>内部<c:forEach>を行う場合にも、同様の問題は、JSP / JSTLに存在します。ループ変数は<jsp:include>によって含まれるコードスニペットにアクセス不能です。しかし<jsp:param>に沿っ<jsp:include>を渡すことによって解決することができJSP / JSTLインチ私はストライプのドキュメントで簡単に見て取り、私は <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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top