Probleme avec pickList de Richfaces
bonsoir,
mon problème c'est que je n'arrive pas à récupérer ma liste sélectionnée dans une pickList de richfaces:
voilà le code dans ma page JSP :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<rich:pickList value="#{manage_bean.eleves_result}" converter="#{manage_bean.converter}" >
<f:selectItem itemLabel="Nom etudiant" itemValue="Nom"/>
<f:selectItems value="#{manage_bean.leftList}" />
<a4j:support event="onlistchanged" reRender="result" />
</rich:pickList>
<rich:panel id="result" bodyClass="pbody">
<f:facet name="header">
<h:outputText value="#{manage_bean.nbr} etudiant(s)"></h:outputText>
</f:facet>
<rich:dataList value="#{manage_bean.eleves_result}" var="student" >
<h:outputText value="#{student.cne}"/>
</rich:dataList>
</rich:panel> |
et voilà ma classe manage_bean:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
package mypackage;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
public class Manage_bean extends Connexion {
private ArrayList<eleve> eleves=new ArrayList<eleve>();
private List<SelectItem> leftList = new ArrayList<SelectItem>();
//liste des etudiants sélectionnés
private List<SelectItem> result = new ArrayList<SelectItem>();
private List<eleve> eleves_result=new ArrayList<eleve>();
//etudiant
private eleve etudiant=new eleve();
private int nbr;
//Converting from SelectItems to your Object:
private MyConverter converter;
//constructeur
public Manage_bean() throws ClassNotFoundException, SQLException {
super();
eleves.clear();
lire("SELECT * FROM eleve where ID_DEPART='1'; ");
while(suivant())
{
eleves.add(new eleve(résultat.getString("CNE"),résultat.getString("NOM_ELEVE"),résultat.getString("PRENOM_ELEVE"),résultat.getInt("ref_groupe"),résultat.getInt("ID_DEPART")));
}
}
//Getters && setters
public int getNbr() {
this.nbr=eleves_result.size();
return nbr;
}
public void setNbr(int nbr) {
this.nbr = nbr;
}
public List<eleve> getEleves_result() {
this.nbr=eleves_result.size();
return eleves_result;
}
public void setEleves_result(List<eleve> eleves_result) {
this.eleves_result = eleves_result;
}
public List<SelectItem> getResult() {
return result;
}
public void setResult(List<SelectItem> result) {
this.result = result;
}
public MyConverter getConverter() {
return converter;
}
public void setConverter(MyConverter converter) {
this.converter = converter;
}
public List<SelectItem> getLeftList() {
this.leftList = new ArrayList<SelectItem>();
//ajouter tous les eleves
converter = new MyConverter(eleves);
for(eleve a: eleves){
SelectItem s = new SelectItem(a,a.getNom());
this.leftList.add(s);
}
return leftList;
}
public void setLeftList(List<SelectItem> leftList) {
this.leftList = leftList;
}
public ArrayList<eleve> getEleves() {
return eleves;
}
public void setEleves(ArrayList<eleve> eleves) {
this.eleves = eleves;
}
public eleve getEtudiant() {
return etudiant;
}
public void setEtudiant(eleve etudiant) {
this.etudiant = etudiant;
}
//affectation
public String affectation() throws SQLException, ClassNotFoundException
{
int i;
eleve e=new eleve();
if(eleves_result.size()!=0)
{
for(i=0;i<eleves_result.size();i++)
{
e=eleves_result.get(i);
modifier("update affectaion set etat='oui' where cne_aff='"e.getCne()"' ;");
}
}
eleves_result.clear();
return "result";
}
} |
la classe MyConverter :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
package mypackage;
import java.util.ArrayList;
import java.util.HashMap;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
class MyConverter implements Converter{
//converter uses a HashMap for switching from selectItems to your objects
private HashMap<String, eleve> map;
public MyConverter(ArrayList<eleve> etudiants) {
map=new HashMap<String, eleve>();
for(eleve o : etudiants){
map.put(o.getCne(), o);
}
}
public Object getAsObject(FacesContext arg0, UIComponent arg1, String string) {
return map.get(string);
}
public String getAsString(FacesContext arg0, UIComponent arg1, Object obj) {
if(obj instanceof eleve)
return Integer.toString(((eleve)obj).getRef_group());
return null;
}
} |
le probleme c'est que je n'arrive pas à récupper les objets de eleves_result.
lla variable nbr=eleves_result.size() s'incremente mais la liste contient des objets nulls.
voilà l'erreur :
Code:
1 2 3 4 5
|
Error calling action method of component with id j_id_jsp_444983576_5:j_id_jsp_444983576_15
Caused by:
java.lang.NullPointerException - /affectation.jsp(168,12) '#{manage_bean.affectation}' java.lang.NullPointerException |
si quelqu'un a une idée pleaz :oops: