JSP 从thymeleaf开始按逆序打印帖子编号

jaql4c8m  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(140)
<tbody>
                     <tr th:each="bean , beanStat : ${list}">
                            <td class="text-center" th:text="${beanStat.size-beanStat.count+1}+(${paging.cri.page}-1)*${cri.perPageNum}" >1</td>
                               <!--  paging.totalcount -->
                            
   <!--                  <tr th:each="bean , beanStat : ${list}">
                            <td class="text-center" th:text="${beanStat.size-beanStat.count+1}+(${paging.cri.page}-1)*${cri.perPageNum}" >1</td>

首先,我很抱歉英语说得不好。
我想给文章编号,但是我想用倒序来编号。我想你可以像下面这样在jsp中做。在thymeleaf中,我想知道如何用倒序来做这个(有索引吗?)
记录总数-((当前页码- 1)* 我想是每页显示的记录数。
${(总计数-状态索引)-((当前页- 1)* 显示编号)}
我是这样实现的,但是我想知道thymeleaf中是否有status.index这样的部分。
enter image description here

qlfbtfca

qlfbtfca1#

Thymeleaf中有一个与JSP方法等效的方法--一组迭代跟踪属性,您可以在处理列表时使用。
假设您有一个Java列表,如下所示:

List<String> list = new ArrayList<>();
list.add("One");
list.add("Two");
list.add("Three");

然后你可以使用以下Thymeleaf:

<table>
    <thead>
        <tr>
            <th>Number</th>
            <th>Item</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="item, iterStat : ${list}">
            <td th:text="${iterStat.size - iterStat.count +1}"></td>
            <td th:text="${item}"></td>
        </tr>
    </tbody>
</table>

这会产生:

<table>
    <thead>
        <tr>
            <th>Number</th>
            <th>Item</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>3</td>
            <td>One</td>
        </tr>
        <tr>
            <td>2</td>
            <td>Two</td>
        </tr>
        <tr>
            <td>1</td>
            <td>Three</td>
        </tr>
    </tbody>
</table>

更新

如果要将分页添加到计算中,则Java代码需要知道:

  • 当前页号
  • 每页的最大行数(最后一页中的行数可能更少)
  • 记录总数(所有页面)

让我们假设我将这3个值从Java传递到Thymeleaf模型,并添加了一些新数据:

List<String> list = new ArrayList<>();
list.add("Alfa");
list.add("Bravo");
list.add("Charlie");
list.add("Delta");
list.add("Echo");

int currentPage = 1;
int rowsPerPage = 5;
int totalRecords = 9;

现在,Thymeleaf变成了这样:

<table>
    <thead>
        <tr>
            <th>Number</th>
            <th>Item</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="item, iterStat : ${list}">
            <td th:text="${totalRecords - (currentPage * rowsPerPage)
                    + rowsPerPage - iterStat.count +1}"></td>
            <td th:text="${item}"></td>
        </tr>
    </tbody>
</table>

对于第1页,这将生成:

<tbody>
    <tr>
        <td>9</td>
        <td>Alfa</td>
    </tr>
    <tr>
        <td>8</td>
        <td>Bravo</td>
    </tr>
    <tr>
        <td>7</td>
        <td>Charlie</td>
    </tr>
    <tr>
        <td>6</td>
        <td>Delta</td>
    </tr>
    <tr>
        <td>5</td>
        <td>Echo</td>
    </tr>
</tbody>

对于第2页(最后4项),我们有:

List<String> list = new ArrayList<>();
list.add("Foxtrot");
list.add("Golf");
list.add("Hotel");
list.add("India");

int currentPage = 2;
int rowsPerPage = 5;
int totalRecords = 9;

注意:只有当前页码发生了变化。每页的行数和总记录数:这些值在所有页面上保持相同。
同样的Thymeleaf模板生成了以下内容:

<tbody>
    <tr>
        <td>4</td>
        <td>Foxtrot</td>
    </tr>
    <tr>
        <td>3</td>
        <td>Golf</td>
    </tr>
    <tr>
        <td>2</td>
        <td>Hotel</td>
    </tr>
    <tr>
        <td>1</td>
        <td>India</td>
    </tr>
</tbody>

相关问题