Thymeleaf th:每两个迭代两个列表

时间:2015-11-20 16:57:06

标签: spring spring-mvc thymeleaf

如何使用thymeleaf th:each。同时迭代两个列表。

    <select id="rooms" th:field="*{room}">
        <option th:each="room : ${roomsFromHotel}"
                th:value="${{room}}"
                th:text="${room.id}">
            room name
        </option>
    </select>

这是有效的,但我想做这样的事情

    <select id="rooms" th:field="*{room}">  
    <option th:each="room : ${roomsFromHotel}, roomType : ${roomTypesList}"
            th:value="${{room}}"
            th:text="${roomType.name}">
            room name
        </option>
    </select>

2 个答案:

答案 0 :(得分:4)

不幸的是你无法这样做。

我现在可以想到的两个选项:

  1. 如果列表大小相同且索引对应同一个对象,则将它们放在Map中并迭代映射。这样你就可以得到房间和房间类型

  2. (首选)创建一个对象并在其中保存room和roomType,然后将其添加到单个List并迭代列表。

  3. 我更喜欢第二种方法,因为您可以保证您实际传入列表并进入视图层进行处理。

答案 1 :(得分:0)

要在@Aeseir答案的第二个选项上进行扩展,我发现最好用room和roomType在控制器方法内部创建内部类。这样,您就不会堆积项目结构,而只有一个一次性使用的对象,在这种情况下,这是理想的。