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 :

Passer un paramètre au bean dans un commandLink


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut Passer un paramètre au bean dans un commandLink
    Bonjour,

    J'ai environ 10 liens (page 1, page 2, page 3...page 10) qui sont des <h:commandLink et je veut faire en sorte que lorsqu'on clique sur le lien (par exemple page 1 ou page 2 ou page 3...) que je puisse récupérer le nom du lien cliqué au niveau du Bean pour un certain traitement et je ne sais comment m'y prendre.

    Merci de vos idées.

  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 : 47
    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,

    Le mieux, c'est de passer en paramètre de la fonction appelée l'identifiant du lien. Par exemple :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:commandLink value="Page 1" ... action="#{monBean.monAction}">
        <f:param name="linkId" value="1"/>
    </h:commandLink>

    (ce n'est pas la seule méthode pour passer un paramètre, ce n'est qu'un exemple)
    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 éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    Merci beaucoup, mais je rencontre quelques petites difficultés.

    Lorsque je clique sur un lien, il n'y a aucune réaction

    J'ai l'impression que le paramètre n'est pas récupéré, il y a-t-il une manière spéciale de récupérer les paramètre dans le Bean en dehors du setter ?

    Voici ma page JSF, j'ai seulement mis deux liens sur les 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <h:panelGrid>  
       <h:commandLink style="font-weight: bold; text-decoration:none;" value="+ History" action="#{gestionPage.afficherPage}" >
            <f:param name="linkId" value="history"/>
        </h:commandLink>
    </h:panelGrid>	
     
    <h:panelGrid>
       <h:commandLink style="font-weight: bold; text-decoration:none;" value="+ Organization" action="#{gestionPage.afficherPage}">
            <f:param name="linkId" value="organization"/>
        </h:commandLink> 
    </h:panelGrid>
    Voici mon 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
     public class GestionPage implements Serializable {
     
            private HashMap<String,String> mapPage = new HashMap<String,String>();
    	private String linkId="";
     
    	public GestionPage(){
    	   mapPage.put("history", "/fronten/history.xhtml");
    	   mapPage.put("organization", "/fronten/organization.xhtml");
    	}
     
    	public HashMap<String, String> getMapPage() {
    	    return mapPage;
    	}
     
    	public String afficherPage(){
     
    	   if(linkId.equals("")){
    	      return "welcome.xhtml";
    	   }
    	   else {
    	      return mapPage.get(getLinkId());
    	    }
    	}
     
    	public String getLinkId() {
    	   return linkId;
    	}
     
    	public void setLinkId(String linkId) {
    	   this.linkId = linkId;
    	}
     
    }

    Merci

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par mesken Voir le message
    Lorsque je clique sur un lien, il n'y a aucune réaction
    Soyez plus précis: votre code n'est pas appelé? Votre code ne fonctionne pas? Vous avez une erreur de validation JSF? Le navgiateur ne fait rien du tout?

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    OK, en fait lorsque je clique sur un lient, la page se recharge juste et rien d'autre ne se passe. J'ai mis un System.out.println("Test") dans la condition qui teste si la variable linkId est vide ou pas et à chaque fois il entre dans cette condition, ça signifie que linkId est toujours vide.
    Soit le paramètre n'est pas renvoyé, soit il y a une manière de le récupérer que je ne connait.

    merci

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on peux voir comment tu récupère le paramètre passé par f:param?

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    OK, en fait au départ, je commençais ma méthode ci-dessous directement par la boucle IF. c'est là où je n'avais aucune réaction. Mais je suis tombé sur un document qui parfais de la récupération que j'ai appliquée ci-dessous avant la boucle IF, là maintenant avec ça, je reçoit pour erreur :
    javax.servlet.ServletException: java.lang.NullPointerException
    Voici le bout de code contenant la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private String linkId;
     
    public String affichagePage() {
     
          FacesContext fc = FacesContext.getCurrentInstance();
          Map<String, String> params = fc.getExternalContext().getInitParameterMap();
          linkId=params.get("linkId");
     
          If(linkId.equals(null))
              return "welcome.xhtml"
          else 
              return mapPage.get(linkId); // mapPage étant le Map qui contient les paires linkId / Chemin complet
     
    }
    Par ailleurs, je trouve plus souple l'amélioration apportée par JSF 2.0 où le passage de la valeur du paramètre peut se faire entre parenthèse de la méthode. Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:commandButton action="#{user.editAction(maPage)}" />
    Sachant que la méthode prendra un paramètre. Mais lorsque je le fais dans ma page xhtml, le compilateur me renvoi une erreur de compilation :
    Syntax error in EL
    Je ne comprends pas pourquoi pourtant ça parait si simple.
    Y-a-t-il autre configuration a effectuer ? J'utilise JSF 2.0 embarqué dans Glassfish 3.1 avec Eclipse Helios.


    Merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/12/2008, 12h18
  2. passer des paramètres à un bean
    Par rhani-sama dans le forum JSF
    Réponses: 2
    Dernier message: 03/09/2008, 13h01
  3. Passer des paramètres à une fonction dans before_filter
    Par abir84 dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/01/2008, 19h40
  4. Passer en paramétre un tableau dans une procédure stockée
    Par killysui dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/04/2006, 11h47
  5. Passer en paramètre un chemin dans redirection
    Par croco83 dans le forum ASP
    Réponses: 5
    Dernier message: 07/05/2004, 08h30

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