Struts2 условная проверка внутри итератора - PullRequest
3 голосов
/ 13 февраля 2012

У меня есть таблица в jsp, в которой я отображаю данные из списка, используя тег s: iterator.Список уже отсортирован по описанию, и мне нужно иметь возможность отображать строку в таблице над каждой группой описаний.Например (представьте, что это таблица):

Заголовок1 -----1 заголовок12 Заголовок13 Заголовок1----- Заголовок 24 Заголовок25 Заголовок2Заголовок3 -----

Что я хочу сделать, так это перебрать список и сравнить текущее описание с предыдущим описанием, и, если они отличаются, отобразить текущее описание в виде новой строки.

Я попробовал несколько разных вариантов этого - но это не сработало:

<s:iterator value="myList" status="rowStatus">
<s:if test="{myList[%{#rowStatus.index}].description != myList[%{#rowStatus.index-1}].description}">
     <tr>
          <td colspan="7"><s:text name="description"/></td>
     </tr>
 </s:if>

Я чувствую, что я очень близок, но просто не могу понять правильный синтаксис.Что мне здесь не хватает ??

Заранее спасибо!

* j

1 Ответ

4 голосов
/ 14 февраля 2012

Выражение OGNL должно быть полным атрибутом "test":

<s:iterator value="myList" status="rowStatus">
  <s:if test="%{myList[#rowStatus.index].description != myList[#rowStatus.index-1].description}">
    ... etc ...

Тем не менее, в JSP кажется много шума;Я хотел бы рассмотреть что-то вроде этого:

<s:iterator value="myList" status="rowStatus">
  <s:if test="%{#cur != description}">
      ... etc ...
  </s:if>
  <s:set var="cur" value="description"/>
</s:iterator>

Есть и другие варианты, в том числе установка флага на стороне Java.

...