为啥 <td th:each="i : $#numbers.sequence(0, table_width)" th:text="$rows[$i]"&g

Posted

技术标签:

【中文标题】为啥 <td th:each="i : $#numbers.sequence(0, table_width)" th:text="$rows[$i]"></td> 不起作用【英文标题】:Why <td th:each="i : $#numbers.sequence(0, table_width)" th:text="$rows[$i]"></td> not working为什么 <td th:each="i : $#numbers.sequence(0, table_width)" th:text="$rows[$i]"></td> 不起作用 【发布时间】:2019-07-04 21:37:15 【问题描述】:

我正在尝试遍历包含对象列表的列表,即 List 我想知道为什么这不起作用,只尝试了“i”,但没有运气。

List<Object[]> lists;  // logic
model.addObject("lists", lists);
model.addObject("table_width", lists.get(0).length);

Thymeleaf 代码片段

<table class="table table-responsive table-stripped table-collapsed table-bordered">
                <tr th:each="rows,rowStat : $lists">
                    <td th:text="$rowStat.count"></td>

                    <td th:each="i : $#numbers.sequence(0, table_width)" th:text="$rows[$i]"></td>
                </tr>
</table>

【问题讨论】:

【参考方案1】:

我找到了办法,

<td th:each="i : $#numbers.sequence(0, table_width-1)" th:text="$rows[__$i__]"></td>

这就是诀窍

【讨论】:

在这种情况下,您不需要预处理。你应该使用th:text="$rows[i]"【参考方案2】:

您可以简单地对两个列表进行迭代。无需使用#numbers 助手。

<table class="table table-responsive table-stripped table-collapsed table-bordered">
    <tr th:each="rows, rowStat : $lists">
        <td th:text="$rowStat.count"></td>
        <td th:each="value: $rows" th:text="$value"></td>
    </tr>
</table>

【讨论】:

【参考方案3】:

如果您正在迭代对象的集合(列表),请尝试以下示例:

html

<div th:if="$not #lists.isEmpty(counts)">
    <h2>Counts List</h2>
    <table class="table table-striped">
        <tr>
            <th>Id</th>
            <th>Name</th>
        </tr>
        <tr th:each="count : $counts">
            <td th:text="$count.id"></td>
            <td th:text="$count.name"></td>
        </tr>
    </table>
</div>

Java:

public List<Count> listAll() 
    List<Count> counts = new ArrayList<>();
    countRepository.findAll().forEach(counts::add);
    return counts;

在 Thymeleaf 文档 - Iteration Basics 部分阅读更多信息。

【讨论】:

谢谢 Mebin,我是 Thymeleaf 的新手,我找到了解决方法。

以上是关于为啥 <td th:each="i : $#numbers.sequence(0, table_width)" th:text="$rows[$i]"&g的主要内容,如果未能解决你的问题,请参考以下文章

thymeleaf数组下标

为啥这个 <td ng-mouseenter="name='John'"> 不起作用?

对于 Thymeleaf 中的每个运算符

thymeleaf模板th:each循环

Thymeleaf th:each 用 th:if 过滤

Thymeleaf th:each 在元素之间添加逗号