Thymeleaf(Java)中的多维列表 - 列出<list <object>&gt;

时间:2017-07-26 20:13:33

标签: list multidimensional-array thymeleaf

你们有没有任何建议,如何在Thymeleaf中迭代一个多维列表?

我的多维列表如下所示:

@Override
public List<List<PreferredZone>> findZonesByPosition(List<Position> positionList) {

        List <PreferredZone> prefZone = new ArrayList<>();
        List<List<PreferredZone>> listPrefZone = new ArrayList<>();
        long positionId = 0;

        for (int i = 0; i < positionList.size(); i++) {

            positionId = positionList.get(i).getPositionId();
            prefZone = prefZoneDAO.findFilteredZone(positionId);

            listPrefZone.add(prefZone);
        }

    return listPrefZone;
}

在我的控制器中作为属性:

List<List<PreferredZone>> prefZoneList = prefZoneService.findZonesByPosition(positionList);
    model.addAllAttributes(prefZoneList);

最后,我尝试在HTML表格中迭代这个二维列表:

<table th:each="prefList :#{prefZoneList}" class="table table-striped display hover">
  <thead>
    <tr>
      <th>ISO</th>
      <th>Name</th>
      <th>Ausschluss</th>
    </tr>
  </thead>
  <!-- Loop für die Daten -->
 
  <tr th:each="row, iterState :${prefList}" class="clickable-row">
    <td th:text="${row[__${iterState.index}__]}.zoneIso"></td>
    <td th:text="${row[__${iterState.index}__]}.zoneName"></td>
    <td style="text-align:center;">
      <input type="checkbox" th:value="${${row[__${iterState.index}__]}.zoneId}" id="zone" class="checkbox-round" />
    </td>
  </tr>
</table>

然而,它不起作用。我没有任何其他想法如何解决这个问题。 我必须有一个多维列表,因为我有一个包含多个记录的表,每个记录包含一个用于打开模态窗口的按钮。每个窗口都包含一个HTML表格,我必须在其中显示记录。

你对我有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用#{prefZoneList}

iterState.index和(如评论中所述)您的错误

试一试:

    <table th:each="prefList : ${prefZoneList}" class="table table-striped display hover">
      <thead>
        <tr>
          <th>ISO</th>
          <th>Name</th>
          <th>Ausschluss</th>
        </tr>
      </thead>

      <tr th:each="row : ${prefList}" class="clickable-row">
        <td th:text="${row.zoneIso}"></td>
        <td th:text="${row.zoneName}"></td>
        <td style="text-align:center;">
          <input type="checkbox" th:value="${row.zoneId}" id="zone" class="checkbox-round" />
        </td>
      </tr>
    </table>

语法#{...} - 消息表达式

iterState.index是当前的迭代索引,从0开始,使用在${prefList[__${iterState.index}__].element}中提交的element prefList