我完全改变了这个问题,因为它的一部分在 Avnish的帮助下得到了回答!汤姆把我送到了正确的方向,谢谢汤姆!
我的问题是我不知道如何告诉Thymeleaf在编辑时预先选择对象元素.
让我演示给你看:

此解决方案有效:
<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>
Run Code Online (Sandbox Code Playgroud)
我试过这个:
<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>
Run Code Online (Sandbox Code Playgroud)
不工作.我也试过这个:
<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>
Run Code Online (Sandbox Code Playgroud)
也没用.我试过th:field="*{parts}"从选项标签中删除,结果相同..
如果我改变th:value到${part}它的工作原理,但随后它并没有发回的ID字符串如[2,4,5,6,...],但Part像实例[第@ 43b45j,部分@ we43y7,...] ... .
更新:我刚刚注意到,如果只选择了一个部分,这是有效的:
<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>
Run Code Online (Sandbox Code Playgroud)
如果选择了多个部件,则不起作用......