Thymeleaf:如何根据switch语句设置列表

时间:2017-03-23 08:07:58

标签: thymeleaf

我在Spring项目中使用Thymeleaf,我需要显示一个列表,这是其中一个案例的结果,但我不知道如何。

这是代码:

<!--Global validation results-->
<div th:if="${#fields.hasErrors('global')}">
   <div class="alert alert-danger" role="alert"
        th:each="err : ${#fields.errors('global')}">

   <div th:switch="${err}">
      <div th:case="error.fromAfterTo" th:text="#{error.fromAfterTo}"></div>
      <div th:case="error.overlaps" th:text="#{error.overlaps}">

         <ul th:each="interval : ${dateOverlaps}">
            <li th:text="${#temporals.format(interval.datefrom, 'dd/MM/yyyy')} +
              ' - ' + ${#temporals.format(interval.dateto, 'dd/MM/yyyy')}">                                                    
            </li>
         </ul>

      </div>
   </div>
</div>

th:case =“error.overlaps”有效,但是当在switch语句之外设置时,列表就会出现。

提前感谢您的帮助。

Aleix

3 个答案:

答案 0 :(得分:0)

你可以替换

吗?
th:case="error.overlaps"

th:case="#{error.overlaps}"

让我知道这是否适合你

答案 1 :(得分:0)

评估th:text的{​​{1}}属性将此评估的结果设置为它所在的#{error.overlaps}标记的正文,有效地用您的循环替换评估结果。这就是你在交换机外看到列表的原因。

详情here

答案 2 :(得分:0)

这是最终的代码,它按预期工作:

<!--Global validation results-->
<div th:if="${#fields.hasErrors('global')}">
   <div class="alert alert-danger" role="alert"
        th:each="err : ${#fields.errors('global')}"> 
        <div th:switch="${err}">
            <div th:case="error.fromAfterTo" th:text="# error.fromAfterTo}"></div>
            <div th:case="error.overlaps">
               <p th:text="#{error.overlaps}"></p>
               <ul th:each="interval : ${dateOverlaps}">
                  <li th:text="${#temporals.format(interval.datefrom, 'dd/MM/yyyy')} 
                      + ' - ' + ${#temporals.format(interval.dateto, 'dd/MM/yyyy')}">                                                    
                  </li>
               </ul>
            </div>
         </div>
   </div>
</div><!--Global validation results-->

再次感谢您的帮助。