Неправильная итерация Thymeleaf

Я не знаю, почему, но когда я перебираю карту с тимелеафом, порядок индексов меняется...?

    <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>

ВЫВОД (неправильный порядок), H2 DB (реальный порядок)


person Yvonnick U    schedule 11.01.2021    source источник
comment
Это проблема Java, а не проблема Thymeleaf. См. Класс Java, который реализует карту и сохраняет порядок вставки . Или вместо этого используйте ArrayList.   -  person andrewjames    schedule 11.01.2021
comment
Я пропустил тот факт, что вы используете LinkedHashMap (согласно тегам). Можете ли вы показать нам, как вы его заполняете? Кроме того, вы обрабатываете данные БД, используя ORDER BY, чтобы гарантировать порядок поиска?   -  person andrewjames    schedule 11.01.2021
comment
Это была проблема со спящим режимом: проверьте мое обновление ;-)   -  person Yvonnick U    schedule 12.01.2021
comment
Рад, что вы решили это. Вы можете написать свой собственный ответ вместо обновления вопроса. Это будет сигналом для других людей, что проблема имеет решение. Вы даже можете принять свой собственный ответ, если хотите.   -  person andrewjames    schedule 12.01.2021


Ответы (1)


Я нашел проблему, Hibernate автоматически меняет Linked или Tree Map на классический hashmap... решение: измените получатель

public Map<Long, Double> getWeights() { return new TreeMap<>(this.weights); }

person Yvonnick U    schedule 13.01.2021