IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Probleme avec pickList de Richfaces


Sujet :

JSF Java

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bonjour,

    Ton message d'erreur parle de l'expression #{mon_bean.affectation}. Or je ne vois pas cette expression dans ton code JSF...
    Ne manque-t-il rien ici ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut Merci pour réponse
    d'abord je vous remercie pour la reponse:

    la fonction affectation se trouve dans la classe Manage_bean que j'ai donné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     //fonction 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";
         }
    le probleme vient du fait que la liste : eleves_result contient des objets nulls alors "e.getCne()" donne une exception. mon problème c'est : pourquoi la liste est vide, pour je n'arrive pas a récupérer je que j'ai sélectionné dans la pickList.

    nb: la liste eleves_result qui doit contenir les valeurs sélectionnées dans les picKList.

    et merci.

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    ou bien s'il ya un exemple avec son bean du composant de trinidad:
    <tr:selectManyShuttle>
    </tr:selectManyShuttle>

    exemple qui montre comment récupérer les valeurs de la liste droite.
    svp j'ai vraiment besoin de ce composant.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Par défaut
    Voilà comment j'utilise les miennes, mais moi je récupère des string, voilà si ça peut t'aider.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public List<SelectItem> getListSessionM(){
    		listSessionMDao = daoSessionM.getList();
    		if (listSessionM == null) {  
    			listSessionM = new ArrayList<SelectItem>(); 
    		}
    		else listSessionM.clear();
    		for (int i = 0;i<listSessionMDao.size();i++) {
    			listSessionM.add(new SelectItem(listSessionMDao.get(i).getLibellesessionmodule()));
    		}
    	}
    	return listSessionM;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      <rich:pickList  id="sessionM"
      		 value="#{planningController.sessionMSelected}"
            <f:selectItems value="#{planningController.listSessionM}" />
      </rich:pickList>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public List<String> getSessionMSelected() {  
    		return sessionMSelected;  
    	}

  6. #6
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    Merci à toi,je travaille mnt avec trinidad et ça marche avec le composant
    <tr:selectManyShuttle>
    </tr:selectManyShuttle>

    je recupère les valeurs choisis.

    merci encore une fois pour la réponse.

Discussions similaires

  1. probleme avec des composants richfaces
    Par dev_newbie dans le forum JSF
    Réponses: 8
    Dernier message: 08/10/2009, 14h30
  2. Probleme d'integration de richfaces avec jsf 1.1
    Par lakhdharani dans le forum JSF
    Réponses: 9
    Dernier message: 27/04/2009, 15h01
  3. Probleme avec ProgressBar de Richfaces
    Par nawfal_saber dans le forum JSF
    Réponses: 1
    Dernier message: 30/07/2008, 13h45
  4. Réponses: 1
    Dernier message: 22/05/2008, 10h16
  5. Réponses: 5
    Dernier message: 11/04/2008, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo