2008-10-02 15 views
30

Hay un menú desplegable de selección y quiero agregar el elemento "Sin selección" a la lista que debería darme 'nulo' cuando se envíe. Estoy usando el controlador derivado SimpleFormController.Spring MVC Etiquetas de formulario: ¿Existe una forma estándar de agregar el ítem "Sin selección"?

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 estar en la adición de un valor nulo al principio de la lista y luego usando un PropertyEditor personalizada para disply este 'nulo' como ' Sin selección'. ¿Existe una solución mejor?

@Edit: He resuelto 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?

Respuesta

36

Una opción:

<form:select path="country" title="country" > 
    <form:option value="">&nbsp;</form:option> 
    <form:options items="${countryList}" /> 
</form:select> 
+0

Tenga cuidado con el uso de la entidad denominada ' ' en las páginas jspx (recientemente me ha provocado errores, indicando que la entidad no está definida, o algo así). Parece más seguro hacer referencia al espacio sin interrupciones por su código: ' ' – Michael

+1

De esta forma, NoSelection publicará una cadena vacía, no 'nula'. value = $ {null} debería publicar null. – javabot

0

No creo que usted debe necesitar un editor de propiedades para esto. Si la opción "en blanco" está primero en la lista, y la etiqueta que muestra la lista no marca ninguno de ellos como seleccionado, entonces el navegador debe seleccionar el primero, "en blanco" automáticamente.

Cuando envíe el formulario, intente y trabaje de modo que el valor "en blanco" esté vinculado a su comando como nulo, lo que podría suceder automáticamente, según el tipo.

Cuestiones relacionadas