Bonjour je vous expose mon problème. Je souhaite utiliser le composant picklist de richfaces pour faire de la validation de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<rich:pickList showButtonsLabel="false" value="#{bean.pickList}">
	<f:selectItems  value="#{bean.snsRejetes}" />
</rich:pickList>
<h:commandButton value="Enregister" action="#{bean.enregisterSns}"  image="/images/step-Forward.png"/>
Dans la liste de gauche j'ai la List<SelectItem>snRejetes
Dans la liste de droite j'ai la List<String>pickList
Je veux que l'utilisateur choisisse de passer des snsRejetes dans la liste des autorisés (pickList)

Ces deux listes sont initialisées dans le bean dans une action, je pense ne pas avoir tout compris dans le fonctionnement du composant. Tel que je le comprend, j'initialise la liste de gauche avec seulement les éléments rejetés et dans la liste de droite avec seulement les éléments validés. Dans ce cas la liste des éléments rejetés (gauche) est bien remplie mais pas celle de droite qui devrait contenir aussi des éléments non.

initialisation Bean cas 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
for(final Element sn : items){
	snsAImporter.add(new SelectItem(sn.getSn(), sn.getSn()));
	pickList.add(sn.getSn());
	elements.remove(sn.getSn());
}
//	pickList.addAll(elements);
	snsRejetes.addAll(constructSelectItemList(elements));
En fouillant sur ce forum j'ai lu que la liste de droite (ma pickList) devait contenir tous les identifiants des éléments des 2 listes, si j’initialise pickList avec tous les identifiants et que je laisse snRejetes avec les éléments rejetés. Je n'ai plus rien dans la liste de gauche et seulement les éléments rejetés dans la liste de droite aie:

Dans le Cas 2 je copie juste en plus les éléments rejetés
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
for(final Element sn : items){
	snsAImporter.add(new SelectItem(sn.getSn(), sn.getSn()));
	pickList.add(sn.getSn());
	elements.remove(sn.getSn());
}
	pickList.addAll(elements);
	snsRejetes.addAll(constructSelectItemList(elements));
En plus de cela je trouve la doc de richfaces pas très explicite et je suis poli. Quand ils écrivent que pour utiliser une pickist il faut 2 listes sans prendre la peine de dire que la première doit être une liste de <String> (la value) et l'autre des SelectItem c'est limite du f***age de g**le. J'ai passé plusieurs heures à comprendre le pb. .

En plus de cela j'ai l'erreur
Bean.pickList}' java.lang.IllegalArgumentException: argument type mismatch
Quand j'exécute l'action pour récupérer le contenu de pickList, en fait l'action (enregisterSns) n'est même pas appelé, je pense que le type d'élement ne doit pas être correct , mais je nage dans la semoule

Pourtant cela me parraissait clair dans ce sujet
http://www.developpez.net/forums/d79...ist-richfaces/