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 :

Passage de paramètre entre deux pages?


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut Passage de paramètre entre deux pages?
    Hello,

    Voila le contexte :
    J'ai deux pages la première permet de saisir des critères de recherche et la deuxième d'afficher le resultat de la recherche.

    Sur la deuxième page j'ai deux boutons.
    Le premier bouton [modify search] permet de réafficher la page de saisie de critère en restaurant les critères saisies ultérieurement.
    Le deuxième bouton [new search] permet de réafficher la page de saisie de critère en réinitialisant tous les champs.

    Mon problème est que j'aimerai savoir sur quel bouton j'ai cliqué pour savoir quoi faire lorsque je réaffiche la page (de saisie de critère).

    J'ai essayé d'utiliser la balise <f:param/> nichée dans le bouton, mais je ne récupère aucune valeur.
    J'ai essayé d'implanter un actionListener. Lorsque je passe dans la méthode du listener, je place un objet dans la request... jusque là ok , par contre en réaffichant la page la valeur n'existe plus en request.

    Est ce que quelqu'un aurait une idée ou un tuyau à me conseiller?

    J'espère que je n'ai pas été trop confus dans mes explications,

    Merci d'avance pour votre aide

  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
    Il faut à mon avis associer chaque bouton à des actions différentes de ton bean.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:commandButton value="Modifier recherche" action="#{monBean.modifier}" .../>
    <h:commandButton value="Nouvelle recherche" action="#{monBean.nouveau}" .../>
    La méthode nouveau du bean va initialiser toutes les propriétés du bean (éventuellement lui même) utilisés dans ton formulaire de recherche.
    Quant à modifier, lui va (re)mettre les bonnes valeurs à ces propriétés du bean.

    Est-ce que je suis assez clair dans mes explications ?
    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 Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Merci pour ta réponse!

    Je ne l'avais pas indiqué, mais c'est ce que j'avais fait initialement.
    En fait, j'arrive bien à faire la différence au moment du clic.

    Ce que j'aurais besoin c'est d'avoir cette information au chargement de la page suivante pour savoir si je dois, ou non, restaurer les valeurs précédemment saisies.

    voila un petit schéma explicatif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    P1 : saisie des critères
    P2 : affichage du résultat
    B1 : modifier la recherche
    B2 : nouvelle recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    P1 --> lancement de la recherche --> P2 --> clic sur B1 ou B2--> action traitée dans le beanManagé de P1 --> navigation rule vers P1 --> chargement de P1 --> vérification au niveau du beanmanagé de P1 :quel bouton a été utilisé --> affichage de P1
    Mon problème se situe au moment de la Vérification au niveau du beanmanagé de P1 :quel bouton a été utilisé .

    Je ne sais pas comment faire transiter l'information entre l'action traitée dans le beanManagé de P2 et la beanManagé de P1.

    Merci d'avance pour ton aide

  4. #4
    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
    Je ne saisis peut être pas bien ton problème, mais pourquoi ne pas avoir ceci :
    Je prends pour exemple un formulaire avec les champs nom et prénom comme critère:
    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
     
    private String nom;
    private String prenom;
    // Ecrire les getters et setters.
     
    private void resetAllFields() {
        nom = null;
        prenom = null;
    }
     
    public void doNewSearch() {
        // Ici, action appelée par le bouton B1
        this.resetAllFields();
    }
     
    public void doModifySearch() {
        // Ici, action appelée par le bouton B2
    }
    Dans la page JSF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
        <h:outputText value="Nom:"/>
         <h:inputText value="#{monBean.nom}"/>
        <h:outputText value="Prenom:"/>
        <h:inputText value="#{monBean.prenom}"/>
    ...
    Il faut bien sûr que ton bean ait un scope session, et non request. Sinon on perd les valeurs de nom et prenom.

    Reponds-je à ton problème ?
    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

  5. #5
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Excuse moi si je suis un peu confu dans mes explications . Je débute sur JSF et je ne maitrise pas encore tous les concepts.. (Mais j'y travaillle )

    Donc, dans l'exemple que tu me donnes la page affichée après le clic (sur B1 ou B2) utilise le même bean que la page ou tu saisies les deux champs (nom et prenom). C'est bien ca?

    Dans mon cas, les deux pages n'utilise pas le même bean. ELles ont chacune un bean dédié qui sont chacun du niveau request

    Lorsque tu écris :
    Citation Envoyé par romaintaz
    Il faut bien sûr que ton bean ait un scope session, et non request. Sinon on perd les valeurs de nom et prenom.
    Justement c'est une question que je me pose, j'ai l'impression que le scope request ne sert pas à grand chose avec JSF.. et qu'il faut passer systématiquement pas la session pour faire transiter des infos du pages à une autre...

    Merci d'avance pour ton aide

  6. #6
    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
    Moi généralement, si la page n'est pas énorme, je crée un bean propre à cette page.
    D'une part elle va conserver les informations affichés sur la page (une propriété par input par exemple), ou éventuellement l'objet qui va conserver les éléments de la page : si j'ai une page qui affiche les informations d'une personne, je peux très bien avoir un bean PersonneScreenBean qui a une instance d'une class Personne, qui elle même contient les données sur la personne, comme par exemple son nom, son prénom, ses coordonnées, etc. Dans la page JSF j'aurais ainsi des expressions EL du type #{personneScreenBean.personne.nom}.
    D'autre part, ce bean proposera aussi les actions liées aux boutons de la page. Par exemple modifierPersonne, sauverPersonne, etc.

    Maintenant, rien ne t'empêche de séparer les beans. Moi j'utilise Spring, il m'est donc très facile d'aller chercher un bean depuis un autre bean, et de lui faire ce que je veux (non, ce n'est pas sale ! ). Par exemple, je peux avoir un bean1 qui dispose d'une action liée à un bouton qui va initialiser le bean2 avant que la page associée au bean2 ne soit affichée. Cela permet d'initialiser la page du bean2 en fonction de ce qui l'appelle. C'est un peu comme dans ton cas...

    Quant aux scopes, je pense qu'il doit y avoir de très bonnes discussions sur le sujet dans ces forums (pas nécessairement sur JSF). Chaque scope a ses avantages et ses inconvénients...
    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/05/2011, 16h28
  2. Réponses: 2
    Dernier message: 09/06/2006, 19h34
  3. Passage de données entre deux pages
    Par spica92 dans le forum ASP
    Réponses: 2
    Dernier message: 08/09/2005, 14h38
  4. passage de parametre entre deux page asp
    Par tomtom25 dans le forum ASP
    Réponses: 4
    Dernier message: 01/04/2005, 16h16
  5. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14

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