Я полностью меняю этот вопрос, так как часть ответа была получена здесь с большой помощью Avnish! Том послал меня в правильное направление, поэтому спасибо Том!
Моя проблема в том, что я не знаю, как сообщить Тимелеафу предварительно выбрать элементы объекта при его редактировании.
Позвольте мне показать вам:
Это решение работает:
<select class="form-control" id="parts" name="parts" multiple="multiple" >
<option th:each="part : ${partsAtribute}"
th:selected="${servisAttribute.parts.contains(part)}"
th:value="${part.id}"
th:text="${part.name}">Part name</option>
</select>
Я пробовал это:
<select class="form-control" th:field="*{parts}" multiple="multiple" >
<option th:each="part : ${partsAtribute}"
th:field="*{parts}"
th:value="${part.id}"
th:text="${part.name}">Part name</option>
</select>
не работает. Я также пробовал это:
<select class="form-control" th:field="*{{parts}}" multiple="multiple" >
<option th:each="part : ${partsAtribute}"
th:field="*{parts}"
th:value="${part.id}"
th:text="${part.name}">Part name</option>
</select>
тоже не работает. Я попытался удалить th: field = "* {parts}" из тега опции, тот же результат.
Если я меняю th: значение на ${part}, он работает, но затем он не отправляет обратно строку идентификаторов вроде [2,4,5,6,...], но экземпляры экземпляров, такие как [Part @43b45j, Part @we43y7,...]...
UPDATE: Я просто замечаю, что это работает, если выбрана только одна часть:
<select class="form-control" th:field="*{parts}" multiple="multiple" >
<option th:each="part : ${partsAtribute}"
th:field="*{parts}"
th:value="${part.id}"
th:text="${part.name}">Part name</option>
</select>
Если выбрано несколько частей, это не сработает...