【问题标题】:for loop in thymeleaf百里香中的for循环
【发布时间】:2014-01-05 03:41:50
【问题描述】:

我怎样才能做到以下(java):

for(int i = 0; i < 81 ; i+=20){
   //Should loop through 5 times!
}

在百里香中?

我试过了:

<option th:each="i : ${#numbers.sequence( 1, 81/20)}">
   <p th:text="${ i }"></p> <!-- THIS loops 4 times, instead of 5 -->
</option>

问题是它不如java代码那么准确。如何做到这一点?

【问题讨论】:

  • ${#numbers.sequence(1, 81/20)} -> 这是什么。这是否在内部告诉它要在这个范围内运行,或者是我们在某处明确提到的东西

标签: html loops each thymeleaf


【解决方案1】:

第一个值是开始计数,第二个是最大值,第三个是增量值

${#numbers.sequence( 1, 4, 1)}

【讨论】:

    【解决方案2】:

    向您的代码添加步骤非常简单。

    #{numbers.sequence(0, 81, 20)}
    

    【讨论】:

      【解决方案3】:

      使用 iterStat 关键字进行迭代。例子 如果您有一个字符串数组,并且您正在使用 thymeleaf 进行迭代。

      <div th:each="str,iterStat : strings">
         <span th:text="${str}"/><!--This will print the index value-->
         <span th:text="${iterStat.index}"/><!--This will print the Index-->
      </div> 
      

      【讨论】:

        【解决方案4】:

        我假设这是由于您使用的数字所致。对于您的 java 代码, 诠释 i = 0;我

        但是您的以下代码 numbers.sequence(1, 81/20)} 应该返回从 1 到 4.05 的整数,分别是 1、2、3 和 4。

        第一个循环为 i 返回 5 个结果,因此运行 5 次。 第二个只返回 4 个结果,因此运行 4 次。我建议从 0 开始运行您的序列,以根据需要返回 5 个结果。

        如果您希望您的 java 代码镜像第二个代码,您应该将其更改为: 诠释 i = 1;我

        简单来说,你是在一个不同数字的循环中运行,我建议将第二条语句改为从 0 开始。

        【讨论】:

        • 我知道,这只是一个尝试,我希望 thymeleaf 和 Java 代码一样。
        • 那么您可以将百里香代码更改为 'numbers.sequence(0, 4)'
        • 数字 81 是满分 100,这个数字实际上是模型中的某个数字,为​​了便于阅读,我只是硬编码输入了它
        • 那么保持从 0,81/20 开始的序列,我会给出相同的结果。除了建议正确的起始数字之外,我无法为您提供更多帮助,从 0 开始将为您提供所需的结果。它给出错误循环数的唯一原因是您从每段代码中的不同数字开始。
        猜你喜欢
        • 2013-11-26
        • 2017-12-04
        • 1970-01-01
        • 2018-09-07
        • 2020-12-30
        • 2021-01-09
        • 2019-10-19
        • 2022-10-08
        • 2020-07-31
        相关资源
        最近更新 更多