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 :

[JSF] Problème : param & commandButton


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 16
    Points
    16
    Par défaut [JSF] Problème : param & commandButton
    J'utilise JSF.1.1 de sun et MyEclipse, mon problème c que je ne peux pas récupérer le paramètre passer avec commandButton:

    Voisi le code *.JSP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ......
    <h:commandButton id="actionPanier" action="#{productCtrl.addPanier}" value="GO">
    <f:param name="id" value="123"/>
    </h:commandButton>
    Voici le code de la methode addPanier
    J'utilise pour le moment FacesMessage seulement pour l'affichage de l'Id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FacesContext facesContext = FacesContext.getCurrentInstance();
    String id = (String) facesContext.getExternalContext().getRequestParameterMap().get("id"); 
    FacesMessage facesMessage = new FacesMessage("Produit ajouté au panier "+id);
    facesContext.addMessage("produitsForm", facesMessage);
    il doit afficher "Produit ajouté au panier 123", mais ça n'arrive jamais, il affiche tjrs : "Produit ajouté au panier null"

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    tjrs le même problème

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Points : 514
    Points
    514
    Par défaut
    Ton code me semble pourtant correct. Est tu sur que facesContext.getExternalContext().getRequestParameterMap() est vide (regarde ça en mode debug).

    Si oui essaye de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:commandButton id="actionPanier" action="#{productCtrl.addPanier}">
    <h:outputText value="GO"/>
    <f:param name="id" value="123"/>
    </h:commandButton>

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Merci, mais votre code ne change rien

    j'ai essayé de savoir le contenu de RequestParameterMap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (Iterator it=facesContext.getExternalContext().getRequestParameterMap().keySet().iterator(); 
    it.hasNext(); i++) { 
    Object key = it.next(); 
    Object value = facesContext.getExternalContext().getRequestParameterMap().get(key); 
    System.out.println("\nkey["+i+"]: "+key+" = value["+i+"]: "+value); 
    }
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    key[0]: produitsForm:actionPanier = value[0]: Soumettre la requête
    key[1]: produitsForm:list:linkselect = value[1]: 
    key[2]: produitsForm:_id22 = value[2]: 
    key[3]: produitsForm:_idcl = value[3]: 
    key[4]: com.sun.faces.VIEW = value[4]: rO0ABXNyACBj....0ABX 
    key[5]: produitsForm = value[5]: produitsForm
    le id n'existe pas !!!!!!!

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    j'ai trouvé quelqu'un qui a le même problème :

    http://www.mail-archive.com/users@my.../msg20727.html

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Points : 514
    Points
    514
    Par défaut
    Mauvais nouvelle pour toi ce n'est pas possible d'utiliser f:param et commandButton

    Voir http://www.jsftutorials.net/param.html : "In contrast with the standard f:param tag, that can be defined only for the h:commandLink tag, j4j:param is defined for the h:form ".

    Voila ce que te dit ce site. Il te propose d'ailleurs un composant pouvant resoudre ton probléme.

    Autre solution possible : utilisé t:updateActionListener (voir le wiki de myfaces : http://wiki.apache.org/myfaces/Execu...ttonParameters

    Sinon tu peux développer ton propre composant. Apres tout f:param met juste une variable en session, ce n'est pas tres long à developper comme composant

    Une solution simple : utilise <f:param> et utilise dans ton command button une actionListener (actionListener = #{productCtrl.addPanier}" ) ensuite ta fonction addPanier devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    public void addPanier (ActionEvent e){
     
    e.getComponent().getAttributes().get("id");
     
    ....
     
    }
    (il me semble que f:param marche avec commandButton mais cela reste à verifier)

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    bcq Shivan

    j'ai aussi trouvé une autre solution qui est aussi interessent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:commandButton value="actionPanier"   action="#{productCtrl.addPanier}">
       <f:param  value="#{UserBean.id}" binding="#{productCtrl.id_client}" />
    </h:commandButton>

    dans la classe qui contient la methode addPanier on ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import javax.faces.component.UIParameter;

    on déclare un nouveau attribut de la classe pour le binding:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class *****{
    private UIParameter id_client;
    ..............
    }

    enfin dans la methode addPanier on recupére le paramètre comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public void addPanier (){
    String id = id_client.getValue().toString()
    .....
    }


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/05/2011, 11h57
  2. Réponses: 2
    Dernier message: 20/09/2006, 21h37
  3. [JSF] Problème avec Session
    Par lecitoyen dans le forum JSF
    Réponses: 2
    Dernier message: 18/08/2006, 08h16
  4. [JSF] Problème d'initialisation
    Par Pakiam dans le forum JSF
    Réponses: 4
    Dernier message: 12/07/2006, 18h12
  5. [JSF]Problème avec <hx:pagerWeb/>
    Par Kcirtap dans le forum JSF
    Réponses: 3
    Dernier message: 03/03/2006, 16h01

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