如何在Thymeleaf中迭代X项?

时间:2014-11-23 22:59:37

标签: thymeleaf

我有模板,对于四个li元素,我应该有一个ul元素。我该怎么做?现在我有类似的东西:

<div th:each="excursion,iterStat : ${excursions}">
    <ul th:if="${iterStat.index}/4 == 0">
        <li>
            <a th:href="@{/excursion/{id}(id=${excursion.excursionId})}"><img src="/template/images/garden1.jpg" alt="Image" /></a>
            <h2 th:text="${excursion.title}"></h2>
            <p th:text="${#strings.abbreviate(excursion.description,128)}"></p>
        </li>
    </ul>
</div>

我认为if条件将应用于el ul元素,但它隐藏了所有内容,包括li元素。

2 个答案:

答案 0 :(得分:9)

根据您的评论,您需要一个包含4个项目的列表,以下内容将起到作用。如果您遇到问题,请告诉我

<ul>
<div th:each="excursion,iterStat : ${excursions}" th:if="${iterStat.index}<5">    
        <li>
            <a th:href="@{/excursion/{id}(id=${excursion.excursionId})}"><img src="/template/images/garden1.jpg" alt="Image" /></a>
            <h2 th:text="${excursion.title}"></h2>
            <p th:text="${#strings.abbreviate(excursion.description,128)}"></p>
        </li>    
</div>
</ul>

编辑1: 基于提供的数据进一步审查产生了另一种可能 在传递之前使用Map而不是Controller中的质量列表:

Map<String, List<Excursion>> excursionsList;

确保将每次游览限制为4(根据需要)。 然后在Thymeleaf迭代地图。

<div th:each="excursion,rowStat : *{excursionsList}">
<ul>
<div th:each="list,iterStat : *{excursion[__${rowStat.index}__].value}">
//your code for each list item information such as excursionId, description etc.
</div>
</ul>
</div>

这应该清理你的代码堆并根据需要进行编写。

答案 1 :(得分:1)

我为实现我想要的而做了什么。控制器:

@RequestMapping( "/" )
public String index( Model model ) {
    List<Excursion> excursions = excursionDao.findAll();
    List<List<Excursion>> excursionsLists = new LinkedList<List<Excursion>>();
    List<Excursion> tempList = new LinkedList<Excursion>();

    int listSize = excursions.size();
    for ( int i = 0; i < listSize; i++ ) {
        tempList.add( excursions.get( i ) );
        if ( listSize == ( i+1 ) || tempList.size() == 4 ) {
            excursionsLists.add( tempList );
            tempList = new LinkedList<Excursion>();
        }
    }

    model.addAttribute( "excursionsLists", excursionsLists );
    return "index";
}

和百里叶模板:

<ul th:each="excursionsList : ${excursionsLists}">
    <li th:each="excursion : ${excursionsList}">
        <a th:href="@{/excursion/{id}(id=${excursion.excursionId})}"><img src="/template/images/garden1.jpg" alt="Image"/></a>
        <h2 th:text="${excursion.title}"></h2>
        <p th:text="${#strings.abbreviate(excursion.description,128)}"></p>
    </li>
</ul>