31 votes

Balises Spring MVC Form: Existe-t-il un moyen standard d'ajouter un élément "Aucune sélection"?

Il y a une sélectionnez le menu déroulant et je tiens à ajouter "Aucune sélection" élément de la liste qui devrait me donner 'null', lorsqu'il est soumis. Je suis en utilisant SimpleFormController dérivé du contrôleur.

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

Et le jspx partie est

<form:select path="country" items="${countryList}" title="country"/>

Une solution possible semble être en ajoutant une valeur null pour le début de la liste, puis en utilisant une mesure PropertyEditor à disply ce "nulle" comme "Aucune sélection". Est-il une meilleure solution?

@Edit: j'ai résolu ce problème avec une validation personnalisée d'annotation qui vérifie si la valeur sélectionnée est "Aucune Sélection". Est-il plus standard et la plus simple solution?

41voto

Jacob Mattison Points 32137

Une option:

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

1voto

skaffman Points 197885

Je ne pense pas que vous devriez avoir besoin d'un éditeur de propriétés pour cela. Si l'option "vide" figure en premier dans la liste et que la balise qui génère la liste n'en marque aucun comme sélectionné, le navigateur doit sélectionner automatiquement la première "vierge".

Lorsque vous soumettez le formulaire, essayez de le travailler afin que la valeur "vide" soit liée à votre commande en tant que null, ce qui peut se produire automatiquement, selon le type.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X