Я работаю со стандартным диалектом тимелеафа и пытаюсь отобразить список флажков в форме. Рендеринг в порядке, однако проблема заключается в том, что я пытаюсь применить свойство «checked» к флажкам, используя служебный метод выражения тимелеафа #lists.contains().
Итак, у меня есть класс модели, который имеет следующие поля:
private List<Template> templates;
@FormParam("selectedTemplates")
private List<String> selectedTemplates = Lists.newArrayList();
HTML-фрагмент шаблона Thymeleaf:
<div th:each="template : *{templates}">
<input type="checkbox" name="selectedTemplates" th:value="${template.id}"
th:checked="${#lists.contains(product.selectedTemplates, template.id)}" />
<label th:text="${template.filename} + ' (' + ${template.description} + ')'" />
<!-- Attempt to use the list contains to check the field -->
<div th:text="${product.selectedTemplates}"/>
<div th:text="${template.id}"/>
<div th:text="${#lists.contains(product.selectedTemplates, template.id)}" />
</div>
Вывод на странице для одного из флажков, который должен быть установлен.
<input type="checkbox" name="selectedTemplates" value="4" /> (Template Name)
<div>[4,5]</div>
<div>4</div>
<div>false<div>
Итак, как видите, я печатаю список со значениями [4,5] и использую метод #lists.contains, чтобы узнать, есть ли в нем template.id, однако этот метод всегда возвращает false. Я даже пробовал некоторые жестко закодированные идентификаторы, чтобы проверить метод, и всегда получаю «ложь».
Например:
<div th:text="${product.selectedTemplates}"/>
<div th:text="${#lists.contains(product.selectedTemplates, 4)}" />
Выводит [4,5]false
<div th:text="${product.selectedTemplates}"/>
<div th:text="${#lists.contains(product.selectedTemplates, '4')}" />
Выводит [4,5]false
Не уверен, что я делаю неправильно, но это кажется таким прямолинейным, не знаю, что еще попробовать. Я предполагаю, что что-то не так с синтаксисом. Любые предложения или советы приветствуются. Я не могу найти какие-либо ресурсы по устранению этой проблемы, руководство по тимелеафу быстро замалчивает этот раздел.