2013-03-05 7 views
5

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ą.

+0

Co masz na myśli, po powrocie, aby go edytować? –

+0

Używam tej samej strony do tworzenia i edycji encji wersji –

Odpowiedz

2

Rozwiązany. Problem istnieje, ponieważ nie zastąpiłem metod.