Создать динамическую таблицу на JSP для элементов в ArrayList - PullRequest
4 голосов
/ 30 мая 2011

В моем весеннем веб-приложении у меня есть массив в атрибуте модели, который я хочу показать в формате таблицы в JSP.Мне нужно расположить элементы списка в двух столбцах динамически.Ниже приведен код, который создает только один столбец, но мне нужно упорядочить четную нечетную пару в двух столбцах.

 <table>
    <c:forEach items="${artifact.answerOptions}" var="answeroption" varStatus="status">
    <tr>
      <td>
      <form:radiobutton path="choosenAnswers" value="${answeroption}"/>
    <label for="choosenAnswers" class="lowerlabel"><c:out value="${answeroption.answerText}"/></label>
      </td>
    </tr>
    </c:forEach>
   </table>

Здесь answerOptions - это список bean-компонентов AnswerOption, у которых есть свойство answerText.Приведенный выше код создает таблицу, но с одним столбцом, но мне нужно, чтобы они были расположены нечетным образом, как показано ниже:

<table>
  <tr>
     <td> List Item 1</td>
     <td> List Item 2</td>
  </tr>
  <tr>
     <td> List Item 3</td>
     <td> List Item 4</td>
  </tr>
  <tr>
     <td> List Item 5</td>
     <td> List Item 6</td>
  </tr>
</table>

Ответы [ 2 ]

4 голосов
/ 30 мая 2011

Вместо этого используйте атрибуты begin, end и step. Вы можете позволить ему повторяться на 2 и получать элементы списка по индексу напрямую.

<table>
  <c:forEach begin="0" end="${fn:length(artifact.answerOptions)}" step="2" varStatus="loop">
    <tr>
      <td>${artifact.answerOptions[loop.index]}</td>
      <td>${artifact.answerOptions[loop.index + 1]}</td>
    </tr>
  </c:forEach>
</table>

(нет, это не выбрасывает ArrayIndexOutOfBoundsException, когда у вас есть нечетное количество предметов)

0 голосов
/ 30 мая 2011

AFAIK невозможно, потому что в итераторе у вас будет доступ только к одному answerOptions объекту, а не к 2, поэтому вы не сможете отформатировать его следующим образом.

...