2009-11-19 64 views
0

說我對每一個條紋布局定義我可以分解一個jsp foreach循環條紋布局

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

的在放置到佈局中之前呈現的任何組件都會被渲染,因此bar爲空並且失敗。有沒有一種方法可以在解析jsp之前構建整個頁面?

回答

0

看到沒有任何答案和問題看起來相當微不足道,我不認爲這裏有很多Stripes用戶。所以這裏是我的兩分錢:

這絕對是一個範圍問題。 <s:layout-component>無權訪問父頁面的頁面/循環範圍。當您在<c:forEach>中執行<jsp:include>時,JSP/JSTL中存在類似的問題。在<jsp:include>包含的代碼片段中,循環變量不可訪問。但是在JSP/JSTL中可以通過沿着<jsp:include>傳遞<jsp:param>來解決。我快速瀏覽了Stripes文檔,並發現了一個<stripes:param>。看看是否有幫助。至少在這裏是一個基於SSCCE拿到想法JSP/JSTL:

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 
+0

這是一個很好的刺當然,但這裏的問題是,當我調用佈局時,該項目還不存在,所以我無法將它作爲參數傳遞。 感謝您的支持。 我打算讓這個問題沒有特定的條紋,因爲它只是一個範圍問題,但我想不出一個什麼時候可以用jsp:includes做同樣的事情。 我懷疑這是不可能的,但如果任何人沒有在沒有首先評估頁面上的表達式的情況下包含jsp的方式,請告訴我們。 – 2009-11-23 12:26:11