Balises de formulaire MVC Spring: existe-t-il un moyen standard d’ajouter & # 8220; Aucune sélection & # 8221; article?

StackOverflow https://stackoverflow.com/questions/162497

  •  03-07-2019
  •  | 
  •  

Question

Il existe un menu déroulant de sélection et je souhaite ajouter "Aucune sélection". élément de la liste qui devrait me donner la valeur "null" une fois soumis. J'utilise un contrôleur dérivé de 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;
}

Et la partie jspx est

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

Une solution possible semble être d'ajouter une valeur null au début de la liste, puis d'utiliser un PropertyEditor personnalisé pour afficher ce 'null' sous la forme 'Aucune sélection'. Y a-t-il une meilleure solution?

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

Était-ce utile?

La solution

Une option:

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

Autres conseils

Je ne pense pas que vous ayez besoin d'un éditeur de propriétés pour cela. Si le " vide " L'option est en premier dans la liste et la balise qui en sort la liste ne marque aucun d'entre eux comme étant sélectionnée. Le navigateur doit alors sélectionner la première option, "vierge". un automatiquement.

Lorsque vous soumettez le formulaire, essayez de le manipuler de manière à ce que le champ "vierge". la valeur est liée à votre commande en tant que null, ce qui peut se produire automatiquement, selon le type.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top