Si vous utilisez un composant DropDownChoice et que vous souhaitez ajuster au mieux ce qui est affiché, vous allez devoir utiliser un ChoiceRenderer.
En considerant votre objet métier Pays :
public class Pays implements Serializable { protected Integer id = null; protected String libelle = null; protected String code = null; public Pays() { super(); } // Getter / Setter }
DropDownChoice<Pays> selectPaysNaissance = new DropDownChoice<Pays>( "candidat.paysNaissance", model, new ChoiceRenderer<Pays>("libelle", "id"));
Le ChoiceRenderer définit ci-dessus permet a Wicket d’utiliser le champs id comme identifiant et le champs libelle comme chaine à afficher. Wicket fera automatiquement appel aux getter de ces deux champs pour initialiser la balise select.
ce qui donnerait :
<select><option value="FR">France</option> <option value="DE">Allemagne</option> <option value="US">Etats-Unis</option> </select>
Pour allez encore plus loin, vous pouvez définir vous même un ChoiceRenderer :
public class VilleChoiceRenderer<T> extends org.apache.wicket.markup.html.form.ChoiceRenderer<Ville> { @Override public Object getDisplayValue(Ville _ville) { return _ville.getLibelle(); } @Override public String getIdValue(Ville _ville, int _index) { return _ville.getId().getCodeInsee() + "-" + _ville.getId().getCodePostal(); } }
Le VilleChoiceRenderer ci dessus permet d’afficher en tant que libellé, le libellé de la ville, mais par contre d’utiliser la concaténation du code Insee et du code postal comme identifiant.
ce qui donne :
<select> <option value="76464-76520">LA NEUVILLE CHANT D OISEL</option> <option value="76508-76280">LA POTERIE CAP D ANTIFER</option> <option value="76522-76430">LA REMUEE</option> <option value="76547-76690">LA RUE ST PIERRE</option> <option value="76712-76170">LA TRINITE DU MONT</option> <option value="76728-76150">LA VAUPALIERE</option> </select>
Imprimer cet article

