Thymeleaf计数器变量未递增

时间:2018-11-01 13:13:26

标签: spring spring-boot thymeleaf counter increment

在使用百里香叶渲染我的html时,我希望有一个整数类型的计数器变量,但计数器变量意外增加。下面是我的代码。请帮忙。

>>> numpy.take(numpy.array(a_str), numpy.array(a_num)-1)
array(['c1', 'c2', 'c3', 'c4'], dtype='|S2')

2 个答案:

答案 0 :(得分:1)

这是由于变量作用域的原因,它是在Thymeleaf issue 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>

答案 1 :(得分:1)

您可以使用以下方法实现它:

在服务器端实现一个称为Counter的简单类:

public class Counter
{
    private int count;

    public Counter()
    {
        count = 0;
    }

    public Counter(int init)
    {
        count = init;
    }

    public int get()
    {
        return count;
    }

    public void clear()
    {
        count = 0;
    }

    public void increment()
    {
        count++;
    }

    public String toString()
    {
        return ""+count;
    }
}

在您的servlet代码中添加:

context.addAttribute("counter", new Counter());

在您的模板中,您可以像这样使用和增加它:

<div th:with="mycounter = ${counter.get()}">
    <div th:with="mycounter=${counter.incrementAndGet()}">
        <span th:text="${mycounter}"></span> <!-- result: 1 -->
    </div>
    <div th:with="mycounter=${counter.incrementAndGet()}">
        <span th:text="${mycounter}"></span> <!-- result: 2 , expected: 2-->
    </div>
</div>