À l'aide de "sélectionner" tag avec des entités dans Thymeleaf

Je suis entrain de créer un formulaire avec la balise select qui ressemble à ceci:

<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 de Spring Data JPA aide à l'auto-convertir sélectionné id à l'entité Product quand je soumettre le formulaire. Le product doit également ne pas être null (je suis en utilisant @NotNull sur le product champ dans la Version classe.

Le problème que j'ai lorsque je reviens en arrière pour modifier les données, les Product n'est pas sélectionnée.

Si je modifie le select comme ceci (th:field et 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>

puis il est sélectionné quand je reviens à l'éditer, mais le validateur ne fonctionne pas (product est toujours instancié, même en cas de sélection de l'id est null).

Il ressemble à un scénario très commun (en sélectionnant une entité de la liste), mais je ne trouve aucune bonne recherche exemple. Merci de partager le secret de la connaissance.

Qu'entendez-vous par revenir à modifier?
J'utilise la même page pour créer et modifier de la Version de l'entité

OriginalL'auteur Filip Spiridonov | 2013-03-05