¿Cómo seleccionar el valor de un cuadro combinado en el controlador en Spring MVC con Thymeleaf?

Dec 20 2020

Tengo el siguiente código para la vista.

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

Controlador

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

Cuando se ejecuta, el campo de la persona muestra correctamente "Nancy". Pero el cuadro combinado muestra hombre en lugar de mujer. ¿Cómo hacer que muestre el valor correcto?

Respuestas

1 andrewjames Dec 20 2020 at 05:12

Debe usar Thymeleaf para manejar el selectedatributo de cada opción, para asegurarse de que la visualización inicial sea correcta:

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

Esto genera el siguiente HTML:

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

El selectedatributo es un atributo booleano HTML; la documentación de Thymeleaf para estos está aquí .