Ich ändere diese Frage total, als Teil davon wurde here mit großer Hilfe von Avnish beantwortet! Tom schickte mich in die richtige Richtung, also danke Tom!thymeleaf mehrere ausgewählt am bearbeiten
Mein Problem ist, dass ich nicht weiß, wie man Thymeleaf anweist, Objektelemente beim Editieren vorzuwählen.
Lassen Sie mich Ihnen:
Diese Lösung funktioniert:
<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>
Ich habe versucht, dies:
<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>
nicht funktionierte. Ich habe es auch versucht:
<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>
hat auch nicht funktioniert. Ich habe versucht, th zu entfernen: field = "* {parts}" aus dem Options-Tag, das gleiche Ergebnis ..
Wenn ich th ändern: Wert zu $ {part} funktioniert es, aber dann sendet es keine Zeichenfolge von IDs wie [2,4,5,6, ...], aber Teilinstanzen wie [Teil @ 43b45j, Teil @ we43y7, ...] ...
UPDATE: Ich merke nur, dass dies funktioniert, wenn nur ein Teil ausgewählt ist:
<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>
Wenn mehrere Teile ausgewählt werden, funktioniert es nicht ...
Dies ist ein Muss: "Es ist auch wichtig, die richtigen equals() - und hashcode() -Methoden in Ihrer Part-Klasse zu implementieren, um einen korrekten Vergleich zu gewährleisten." – Blejzer