Etiquetas de formulario MVC de Spring: ¿Hay una manera estándar de agregar el elemento "Sin selección"?
-
03-07-2019 - |
Pregunta
Hay un menú desplegable de selección y quiero agregar " Sin selección " elemento a la lista que debería darme 'nulo' cuando se envía. Estoy usando el controlador derivado SimpleFormController.
protected Map referenceData(HttpServletRequest httpServletRequest, Object o, Errors errors) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
map.put("countryList", Arrays.asList(Country.values()));
return map;
}
Y la parte jspx es
<form:select path="country" items="${countryList}" title="country"/>
Una posible solución parece ser agregar un valor nulo al comienzo de la lista y luego usar un PropertyEditor personalizado para mostrar este 'nulo' como 'Sin selección'. ¿Hay una mejor solución?
@Edit: Resolví esto con una anotación de validación personalizada que comprueba si el valor seleccionado es " Sin selección " ;. ¿Hay una solución más estándar y más fácil?
Solución
Una opción:
<form:select path="country" title="country" >
<form:option value=""> </form:option>
<form:options items="${countryList}" />
</form:select>
Otros consejos
No creo que necesites un editor de propiedades para esto. Si el " en blanco " la opción es la primera en la lista, y la etiqueta que genera la lista no marca ninguna de ellas como seleccionada, luego el navegador debe seleccionar la primera, " en blanco " uno automáticamente.
Cuando envíe el formulario, intente trabajar para que " blank " el valor está vinculado a su comando como nulo, lo que podría suceder automáticamente, dependiendo del tipo.