2015-03-04 4 views
2

Предположим, у меня есть два стола, понедельник и вторник. Я хочу заполнить эти таблицы в соответствии с свойством объекта. Таким образом:Как нарисовать несколько таблиц HTML из одной коллекции с <s:iterator>?

<s:iterator value="trainings"> 
<table> 
    <tr><th>Monday</th></tr> 

    <s:if test="weekday.toString().equals('MONDAY')"> 
    <tr> 
     <td> 
      <s:property value="title" /> 
     </td> 
    </tr> 
    </s:if> 
</table> 

<table> 
    <tr><th>Tuesday</th></tr> 

    <s:if test="weekday.toString().equals('TUESDAY')"> 
    <tr> 
     <td> 
      <s:property value="title" /> 
     </td> 
    </tr> 
    </s:if> 
</table> 

</s:iterator> 

Как это сделать правильно? Спасибо

EDIT:

public class Training {  
    private Weekday weekday;   
    ....   
} 

public Enum Weekday {   
    MONDAY, 
    TUESDAY, 
    ...   
} 
+0

Пожалуйста, продемонстрируйте структуру ваших объектов Java –

+0

добавлена ​​структура – Bravo

ответ

1

Чтобы заполнить две различные таблицы из одного источника (который должен быть лучше разделить на стороне сервера, в действии), как правило, нужно перебирать коллекцию дважды:

<table> 
     <tr><th>Monday</th></tr> 
    <s:iterator value="trainings"> 
     <s:if test="weekday.toString().equals('MONDAY')"> 
     <tr><td><s:property value="title" /></td></tr> 
     </s:if> 
    </s:iterator> 
    </table> 

    <table> 
     <tr><th>Tuesday</th></tr> 
    <s:iterator value="trainings"> 
     <s:if test="weekday.toString().equals('TUESDAY')"> 
     <tr><td><s:property value="title" /></td></tr> 
     </s:if> 
    </s:iterator> 
    </table> 

Чтобы избежать выполнения в <s:if> несколько раз, вы можете использовать OGNL's List Selection:

<table> 
     <tr><th>Monday</th></tr> 
    <s:iterator value="trainings.{? #this.weekday.toString() == 'MONDAY' }"> 
     <tr><td><s:property value="title" /></td></tr> 
    </s:iterator> 
    </table> 

    <table> 
     <tr><th>Tuesday</th></tr> 
    <s:iterator value="trainings.{? #this.weekday.toString() == 'TUESDAY' }"> 
     <tr><td><s:property value="title" /></td></tr> 
    </s:iterator> 
    </table> 

, что приводит к меньшему и более чистому HTML-коду.

+1

Спасибо! – Bravo

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

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