Переменная счетчика Thymeleaf не увеличивается - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу иметь переменную счетчика типа integer при рендеринге моего HTML-кода с использованием тимелиста, но переменная счетчика неожиданно увеличивается. Ниже мой код. Пожалуйста, помогите.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en"
      xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div th:with="mycounter = 0">
    <div th:with="mycounter=${mycounter + 1}">
        <span th:text="${mycounter}"></span> <!-- result: 1 -->
    </div>
    <div th:with="mycounter=${mycounter + 1}">
        <span th:text="${mycounter}"></span> <!-- result: 1 , expected: 2-->
    </div>
</div>
</body>
</html>

1 Ответ

0 голосов
/ 01 ноября 2018

Это связано с изменяемой областью видимости, это было поднято в выпуск Thymeleaf 666 с альтернативным подходом:

Поскольку создание переменных ограничено элементом, вы, возможно, не сможете получить общее значение, используя th: with, поэтому вам придется искать в другом месте.

Одним из альтернативных решений будет обработка результата в вашем контроллере, сохранение результата в атрибуте модели, а затем использование этого результата в представлении. Например, весной:

public String yourControllerEndpoint(Model model) {
 int total = // get the total of your list
 model.addAttribute("total", total);
 return "your-template";
}
<table>
 <!-- Your looping display code here -->
  ...
  <span th:text="${total}">Total will go here</span>
</table>
...