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 :

Bean null dans dans ma page JSF


Sujet :

JSF Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 85
    Points : 42
    Points
    42
    Par défaut Bean null dans dans ma page JSF
    Bonjour tout le monde,
    J'ai deux pages JSF. Dans la première je liste un ensemble d'objets et par un clic sur l'un d'eux on se trouve dans la page détail de cet objet.
    J'ai deja fait des trucs pareil pas mal de fois mais cette fois ci j'ai rencontré un probleme que j'ai pas compris : dans la page détails l'objet ( mon bean) est null et je ne récupère aucune information.

    dans ma page 1 voila la portion du code de lien vers les détails

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:commandLink action="selectSession"  actionListener="#{sesionbean.selectSession}">
     
    <h:outputText value="#{sesionbean.id}"></h:outputText>
    <f:param id="selectSessionId" name="id"	value="#{sesionbean.id}" />
     
    </h:commandLink>
    voila le code de ma fonction selectSession

    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
     
    public void selectSession(ActionEvent event) {
    		UIParameter component = (UIParameter) event.getComponent()
    				.findComponent("selectSessionId");
    		Integer id = Integer.parseInt(component.getValue().toString());
    		FacesContext fc = FacesContext.getCurrentInstance();
    		SessionListBean bean = (SessionListBean) fc.getExternalContext()
    				.getSessionMap().get("sessionListBean");
    		ArrayList<SessionBean> sessionList = bean.getSessionList();
    		Iterator<SessionBean> iterator = sessionList.iterator();
    		SessionBean sessionBean = new SessionBean();
    		while (iterator.hasNext()) {
    			sessionBean = iterator.next();
    			if (sessionBean.getId() == id)
    				this.setSessionBean(new SessionBean(sessionBean.getId(),
    						sessionBean.getUserId(), sessionBean.getIgnoreError(),
    						sessionBean.getState(), sessionBean.getDateCreate(),
    						sessionBean.getDateModif(), sessionBean.getActeList()));
    		}
    	}

    J'ai fait le debogage dans cette fonction et j'ai vérifié que mon bean contient bien les informations de détails. Mais dans la JSF rien ne s'affiche (bien sur la page s'affiche mais sans les valeurs qui proviennent normalement du bean)

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    Et si tu remplaçais ton actionListener par une vraie action qui fait la même chose et retourne "selectSession" ? Parce que la seule idée qui me vienne c'est que la page s'ouvre avant que l'actionListener soit complètement exécuté, d'où les valeurs nulles de ton bean. M'enfin si ce n'est pas ça, je sais pas

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Points : 228
    Points
    228
    Par défaut
    Tu as une curieuse façon de récupérer un paramètre dans la requête. Ou alors c'est moi.
    Dans ta première page (celle dans laquelle tu as une liste), comment construits-tu la liste en question ? Si tu utilises une datatable, tu peux récupèrer très facilement la valeur sélectionnée dans la méthode que tu appelles (dans un action, pas un actionListener)
    Il te suffit de faire un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FacesContext fc = FacesContext.getCurrentInstance();
    		transport = (Transport) fc.getApplication().evaluateExpressionGet(fc,
    				"#{transport}", Transport.class);
    Où "transport" est le nom de l'itération courante dans ta datatable.
    Ce code n'est valable qu'en JSF 1.2 de mémoire.
    En JSF 1.1 c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FacesContext fc = FacesContext.getCurrentInstance();
    		Utilisateur utilisateur = (Utilisateur) fc.getApplication()
    				.createValueBinding("#{varlistUtilisateurs}").getValue(fc);
    Ensuite il suffit d'utilise le bean comme tu le souhaites pour peupler des champs ou autre.

Discussions similaires

  1. problème accents dans post de page jsf
    Par ktaria dans le forum JSF
    Réponses: 0
    Dernier message: 08/01/2013, 15h13
  2. Réponses: 2
    Dernier message: 22/10/2012, 22h07
  3. Plusieurs DataTable dans une seule page JSF
    Par ahmedpa dans le forum JSF
    Réponses: 10
    Dernier message: 24/07/2012, 20h25
  4. afficher le résulta dans la même page jsf
    Par kohan95 dans le forum JSF
    Réponses: 1
    Dernier message: 12/02/2010, 12h46
  5. inclure une page jsf dans une autre page jsf
    Par cooltype dans le forum JSF
    Réponses: 3
    Dernier message: 17/07/2008, 11h28

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