我有模板,对于四个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
元素。
答案 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>