2015-01-02 4 views
0

Я пытался отобразить вложенные данные карты на основе структуры Map (String, Pojo). Я попробовал всевозможные способы показать это, но он не узнает объект Map в pojo.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 дроплета Вопрос. Когда вы имеете дело с Nested 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

Кнопка запуска кода удалена - Спасибо Samaras .. – 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> 

 Смежные вопросы

  • Нет связанных вопросов^_^