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 :

Obtenir par programmation la page affichée précédemment


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Obtenir par programmation la page affichée précédemment
    Bonjour,

    J'ai une page nommée Editer_creer.jsp qui sert autant pour la mise-à-jour que pour la création de nouveaux membres d'une association.

    Le lien soumettre de cette page se lit comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:commandLink action="#{membres.edit}" value="#{msgs['Enregistrer']}">
       <f:param name="jsfcrud.currentMembres" value="#{jsfcrud_class['EntitesJPA.util.JsfUtil'].jsfcrud_method['getAsConvertedString'][membres.membres][membres.converter].jsfcrud_invoke}"/>
    </h:commandLink>
    Je dois modifier cette page pour que la bean appelée en cliquant sur le lien pointe soit vers la méthode pour créer un nouveau membre, soit vers celle pour éditer un membre existant.

    Pour ce faire, j'ai pensé mettre les deux liens mais avec une condition «rendered» qui ne serait vraie que pour le cas approprié, ce qui fait que la page ne serait générée qu'avec un seul lien, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:commandLink  rendered="#{PanneauPrincipal.Editer}" action="#{membres.edit}" value="#{msgs['Enregistrer']}">
       <f:param name="jsfcrud.currentMembres" value="#{jsfcrud_class['EntitesJPA.util.JsfUtil'].jsfcrud_method['getAsConvertedString'][membres.membres][membres.converter].jsfcrud_invoke}"/>
    </h:commandLink>
     
    <h:commandLink  rendered="#{!PanneauPrincipal.Editer}" action="#{membres.create}" value="#{msgs['Enregistrer']}">
       <f:param name="jsfcrud.currentMembres" value="#{jsfcrud_class['EntitesJPA.util.JsfUtil'].jsfcrud_method['getAsConvertedString'][membres.membres][membres.converter].jsfcrud_invoke}"/>
    </h:commandLink>
    La question est donc : comment puis-je dans la bean PanneauPrincipal écrire une méthode Editer qui pourrait trouver dans le FaceContext la méthode de la bean "membres" qui a engendré l'affichage de la page Editer_creer.jsp? (La méthode ayant engendré la page en question est soit "membres.edit_setup" ou "membres.create_setup").

    Je suppose que cela implique la méthode NavigationHandler() mais je ne sais pas trop comment la formuler.

    Merci à l'avance de votre aide!

    PC

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu peux le faire en utilisant seulement les navigation rules, ta page pourra etre rendu par plusieurs action, si tu veux savoir d'ou tu viens, tu peux utiliser un champs dans ton bean ou tu mets l'origine de l'action.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Les règles de navigation ne sont pas d'aucune utilité dans ce cas-ci car il y a deux règles qui mènent à la même page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        <navigation-rule>
            <navigation-case>
                <from-outcome>membres_create</from-outcome>
                <to-view-id>/PagesJSF/membres/Editer_creer.jsp</to-view-id>
            </navigation-case>
        </navigation-rule>
        <navigation-rule>
            <navigation-case>
                <from-outcome>membres_edit</from-outcome>
                <to-view-id>/PagesJSF/membres/Editer_creer.jsp</to-view-id>
            </navigation-case>
        </navigation-rule>
    J'aurais voulu déterminer par programmation à partir de la méthode NavigationHandler.handleNavigation(), la source de la règle de navigation afin de créer une méthode générale. Dans ce cas-ci, il s'agit de déterminer si c'est membres_create ou membres_edit qui a engendré l'affichage de la page Editer_creer.jsp.

    Cependant, l'article http://andyschwartz.wordpress.com/20...-2/#navigation montre que ce n'est pas possible sauf avec JSF 2.0.

    Je vais donc créer une méthode spéciale dans mon bean, comme vous le suggérez, pour enregistrer la méthode à appeler, juste avant de l'appeler. Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    panneauPrincipal.setProchainePage("membres_edit");
    return "membres_edit";
    Merci de votre aide,

    PC

Discussions similaires

  1. [IDE] Comment fermer par programme un dialog affiché avec execute
    Par Pascale38 dans le forum C++Builder
    Réponses: 21
    Dernier message: 03/04/2013, 16h10
  2. Réponses: 2
    Dernier message: 19/07/2008, 22h42
  3. [Flex2] créer/afficher un cercle par programmation ?
    Par frenchy404 dans le forum Flex
    Réponses: 4
    Dernier message: 17/02/2008, 13h24
  4. Réponses: 1
    Dernier message: 05/02/2007, 13h29
  5. [dblookup] afficher une valeur par programmation
    Par let_me_in dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/05/2005, 14h42

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