Comment sélectionner la valeur d'une zone de liste déroulante dans le contrôleur dans Spring MVC avec Thymeleaf?

Dec 20 2020

J'ai le code suivant pour la vue.

<input type="text" name="person" th:value="${person}"> <select name="gender" id="gender" th:value="${gender}">
    <option value="Male">Male</option>
    <option value="Female">Female</option>   
</select>

Manette

modelAndView.addObject("person", "Nancy");
modelAndView.addObject("gender", "Female");

Lorsque cela s'exécute, le champ de personne affiche correctement "Nancy". Mais la zone de liste déroulante affiche un homme au lieu d'une femme. Comment lui faire afficher la valeur correcte?

Réponses

1 andrewjames Dec 20 2020 at 05:12

Vous devez utiliser Thymeleaf pour gérer l' selectedattribut de chaque option, afin de vous assurer que l'affichage initial est correct:

<select name="gender" id="gender" th:value="${gender}"> <option value="Male" th:selected="${gender} == 'Male'">Male</option>
    <option value="Female" th:selected="${gender} == 'Female'">Female</option>   
</select>

Cela génère le HTML suivant:

<select name="gender" id="gender" value="Female">
    <option value="Male">Male</option>
    <option value="Female" selected="selected">Female</option>   
</select>

L' selectedattribut est un attribut booléen HTML - la documentation Thymeleaf pour ceux-ci est ici .