tworzę formularz z zaznaczonym znacznikiem, który wygląda tak:Korzystanie „wybierz” tag z podmiotami w Thymeleaf
<form th:object="${version}" method="post" class="form-horizontal">
...
<div class="control-group" th:classappend="${#fields.hasErrors('product')} ? 'error'">
<label class="control-label" for="product" th:text="#{version.product}">Product</label>
<div class="controls">
<select id="product" th:field="*{product}">
<option value="" th:text="#{common.select.prompt}"></option>
<option th:each="p : ${productList}" th:value="${p.id}" th:text="${p.name}"></option>
</select>
<span class="help-inline" th:errors="*{product}"></span>
</div>
</div>
...
</form>
DomainClassConverter
klasa Spring Data JPA
pomaga automatycznego przeliczenia wybranych id
podmiotowi Product
kiedy złożyć formularz. product
powinny być również not null (używam @NotNull
na polu product
w klasie Version
Problem, który mam. - kiedy wrócę do edycji danych, Product
nie wybrano
. Jeśli zmodyfikować select
tak (th:field
i th:errors
): <-- p.s. is not a sad smile
<select id="product" th:field="*{product.id}">
<option value="" th:text="#{common.select.prompt}"></option>
<option th:each="p : ${productList}" th:value="${p.id}" th:text="${p.name}"></option>
</select>
<span class="help-inline" th:errors="*{product.id}"></span>
wówczas staje wybrany kiedy wrócę do edycji, ale walidator nie działa (product
jest zawsze tworzone, nawet jeśli wybrany identyfikator to null
).
Wygląda na bardzo typowy scenariusz (wybranie podmiotu z listy), ale nie mogę znaleźć żadnego dobrze wyglądającego przykładu. Proszę podzielić się tajemną wiedzą.
Co masz na myśli, po powrocie, aby go edytować? –
Używam tej samej strony do tworzenia i edycji encji wersji –