2013-03-05 10 views
5

Sto creando un modulo con il tag select che assomiglia a questo:Usando 'selezionare' tag con le entità in 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 classe di Spring Data JPA aiuta ad auto-convert selezionato id all'entità Product quando ho invia il modulo. Il product dovrebbe anche essere non nullo (sto usando @NotNull sul campo product nella classe Version

Il problema che ho -. Quando tornerò per modificare i dati, il Product non è selezionata

. Se modifico l'select come questo (th:field e 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> 

allora diventa selezionata quando torno di modificarla, ma il validatore non funziona (product viene sempre istanziato, anche se l'ID selezionato è null).

Sembra uno scenario molto comune (selezionando un'entità dall'elenco), ma non riesco a trovare alcun bell'esempio. Per favore condividi la conoscenza segreta.

+0

Cosa intendi per tornare a modificarlo? –

+0

Io uso la stessa pagina per creare e modificare l'entità della versione –

risposta

2

Risolto. Il problema esisteva perché non avevo ignorato i metodi equals() e hashCode().

Problemi correlati