【问题标题】:Wrong Thymeleaf iteration错误的 Thymeleaf 迭代
【发布时间】:2021-04-16 11:49:33
【问题描述】:

我不知道为什么,但是当我用 thymeleaf 迭代 Map 时, 索引顺序正在改变...?

    <form method="POST" action="/deleteValue">
        <tr th:each="weight : ${user.weights}">
            <span th:text="${weightStat.index}">index</span>
            - <span th:text="${#dates.format(new java.util.Date(weight.key))}"></span>
            - <span th:text="${weight.value}">value</span>Kg
            <input type="hidden" name="key" th:value="${weight.key}"/>
            <button type="submit">X</button>
            <br>
        </tr>
    </form>

OUTPUT(错误顺序),H2 DB(真实顺序)

【问题讨论】:

  • 这是一个 Java 问题而不是 Thymeleaf 问题。见Java Class that implements Map and keeps insertion order。或者,改用ArrayList
  • 我错过了您使用LinkedHashMap 的事实(根据标签)。你能告诉我们你是如何填充它的吗?另外,您是否使用 ORDER BY 处理数据库数据,以保证检索顺序?
  • 这是一个休眠问题:检查我的更新 ;-)
  • 很高兴你解决了它。您可以编写自己的答案,而不是更新问题。这将向其他人发出信号,表明问题有解决方案。如果您愿意,您甚至可以接受自己的答案。

标签: spring-boot thymeleaf linkedhashmap


【解决方案1】:

我发现了问题,Hibernate 自动将 Linked 或 Tree Map 更改为经典 hashmap... 解决方案:更改 getter

public Map&lt;Long, Double&gt; getWeights() { return new TreeMap&lt;&gt;(this.weights); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 2015-12-12
    • 1970-01-01
    • 2019-08-16
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多