Bonjour,
là je pense que le message d'erreur est plutôt clair :
option for component j_id9 (très probablement l'id généré de ton selectone) was not an instance of javax.faces.model.SelectItem. Type found: java.util.ArrayList.
Ton code confirme que ton #{compteCtr.list} est un ArrayList<Client> et non un ArrayList<javax.faces.model.SelectItem>. Et c'est bien à ça que s'attend le selectOne. De la même façon, la valeur ("value") sera celle qui te permettra d'identifier ton élément. On met généralement dans un SelectItem qqchose du genre
1 2 3 4
| private List<SelectItem> maListeDeSelectItems = ArrayList<SelectItem>();
for(Client client : maListeDeClients){
maListeDeSelectItems .add(new SelectItem(client.getId(),client.getName()+' '+client.getLastName()));
} |
Et pour mettre à jour le client sélectionné, il suffit de jouer avec le setter de la valeur.
<h:selectOneMenu value="#{compteCtr.currentClient}" >...
public setCurrentClient(int id) {selectedClient = getClientsDao().getClientById(id);}
Tu trouveras beaucoup d'exemples de SelectOne dans ce forum.
Edit :

Envoyé par
fxrobin
Tu aurais pu faire une "petite" recherche, car il ne se passe pas 15 jours sans que la question ne revienne ...
Je n'avais pas vu ta réponse avant de poster robin... et plutôt d'accord avec du coup
Partager