Z tego wynika, że w tym formularzu nie tworzysz nowego usera. Chcesz dodać jednego (lub kilku) spośród już istniejących jako opiekuna do nowo tworzonego klienta? Do tego nie trzeba tworzyć dwóch obiektów w formularzu. Ostania próba:
Tworzysz w kontrolerze atrybut modelu z listą wszystkich dostępnych dla klienta userów:
Kopiuj
@ModelAttribute("patrons")
List<User> allUsers() {
return userRepository.findAll();
}
W formularzu tworzysz selecta
:
Kopiuj
<form th:object="${klient}" th:action="@{/osoba}" method="post">
...
<select th:field="*{users}" name="users" multiple="multiple">
<option th:each="patron : ${patrons}"
th:value="${patron}"
th:text="${patron.lastName}">Opiekun
</option>
</select>
...
W kodzie formularza masz sporo błędów, jak korzystasz z th:object
to odwołanie do pola user
odbywa się przez gwiazdkę: *{user}
a nie ${user}
. Raz piszesz, że masz w klasie Klient pole users
a w formularzu robisz coś takiego:
Kopiuj
<option
th:each="users : ${user}"
th:value="${users.UserId}"
th:utext="${users.lastName}"
/>
a chyba powinno być:
Kopiuj
<option
th:each="user : *{users}"
th:value="${user.UserId}"
th:utext="${user.lastName}"
/>