2015-01-02 51 views
0

我試圖顯示基於Map(String,Pojo)結構的嵌套地圖數據。我嘗試過所有不同的方式來顯示它,但它不會識別pojo上的Map對象。ATG ForEach嵌套地圖顯示

  <dsp:droplet name="ForEach"> 
      <dsp:param name="array" bean="OrderInfo.sharedOfferInfo.parentDataMap"/> 
      <dsp:oparam name="output"> 
      <dsp:getvalueof param="element.offersMap" var="offersMap" /> 
       <tr> 
        <td><p><dsp:valueof param="key" /> </p></td> 
        <dsp:droplet name="ForEach"> 
         <dsp:param name="array" value="${offersMap}"/> 
         <dsp:oparam name="output"> 
          <td><p><dsp:valueof param="element.description"/></p></td> 
          <td><p><dsp:valueof param="element.sku"/></p></td> 
         </dsp:oparam> 
        </dsp:droplet> 
      </dsp:oparam> 
      </dsp:droplet> 

我有一切的getter方法,所以情況並非如此。嵌套的ForEach液滴根本不工作嗎?我在這裏不知所措。

我已經嘗試打印出「element.offersMap」對象中的內容,但它只是打印一個空白空間。如果我調試數據,它都適當填充,所以這也不是問題。我需要創建一個自定義的液滴並返回特定的部分嗎?

+0

輸出oparam是否被服務?什麼''print?如果element.offersMap沒有提供任何東西,嵌套的foreach肯定不會工作。 – Patrick

回答

1

即使主要問題是解決了,答案是嵌套的ForEach滴問題。在處理嵌套ForEach時,嘗試使用elementName屬性而不是使用包含當前元素的元素。

元件(從Oracle ATG文檔)

設置於每個索引增量和輸出參數被呈現時的當前的數組元素。

的ElementName

應該被用於這勢必到輸出oparam的範圍的元素的名稱的可選參數。

<dsp:droplet name="ForEach"> 
<dsp:param name="array" bean="OrderInfo.sharedOfferInfo.parentDataMap"/> 
<dsp:param name="elementName" value="offers"/> 
    <dsp:oparam name="output"> 
     <tr> 
      <td><p><dsp:valueof param="key" /> </p></td> 
      <dsp:droplet name="ForEach"> 
      <dsp:param name="array" param="offers.offersMap"/> 
      <dsp:param name="elementName" value="offerMapValue"/> 
       <dsp:oparam name="output"> 
        <td><p><dsp:valueof param="offerMapValue.description"/></p></td> 
        <td><p><dsp:valueof param="offerMapValue.sku"/></p></td> 
       </dsp:oparam> 
      </dsp:droplet> 
</dsp:oparam> 
</dsp:droplet>  
+0

刪除運行代碼按鈕。 – gsamaras

+0

刪除了運行代碼按鈕 - 謝謝薩馬拉斯.. – Jackson

+0

這似乎是罪魁禍首。使用它進行測試,取而代之的是它的工作。 –

0

我想parentDataMap是一個地圖。如果你想顯示該地圖的值試試這個:

<dsp:droplet name="ForEach"> 
     <dsp:param name="array" bean="OrderInfo.sharedOfferInfo.parentDataMap.values"/> 

....

0

啊這個問題要誠實刪除。我只是用JSTL來解決它。

父映射正確地返回數據,問題是它不會給我一個element.offersMap的值,無論我做了什麼。

我實現了使用JSTL同樣的事情,它工作得很好:

<c:forEach items="${OrderInfo.sharedOfferInfo.parentDataMap}" var="entry"> 
    <tr><td colspan="5"><p><c:out value="${entry.key}"/></p></td></tr> 
    <c:forEach items="${entry.value.offersMap}" var="entry2"> 
     <c:forEach items="${entry2.value}" var="entry3"> 
      <tr> 
       <td></td> 
       <td><p><c:out value="${entry2.key}" /></p></td> 
       <td class="Text-Left"><p><c:out value="${entry3.description}" /></p></td> 
       <td><p><c:out value="${entry3.sku}" /></p></td> 
      </tr> 
     </c:forEach> 
    </c:forEach> 
</c:forEach>