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, session et MAJ


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut [Résolu]Bean, session et MAJ
    Bonjour,

    J'ai 2 pages JSF, A et B. A contient des champs de saisies qui impactent B.
    B contient une liste déroulante et une dataTable, dont le contenu varie suivant la sélection de la liste déroulante (2 choix : 1 et 2).
    Mon problème est le suivant :
    - Je vais sur B. La page s'affiche. Je sélectionne le choix 2.
    - Je vais ensuite sur A. Je renseigne des valeurs dans les champs impactant B (choix 2). J'enregistre.
    - Lorsque je retourne sur B, je récupère la page d'avant les modifications (choix 2).
    Pour que ces dernières soient prises en compte, il me faut changer de sélection dans ma liste déroulante (choix 1 puis revenir sur mon choix 2).

    Je ne peux pas mettre mon Bean B en request, ni le sortir de la session pour le faire reconstruire, car il est possible de renseigner des champs sur B et de les sauvegarder dans le cache (dans mon Bean B).

    Je n'arrive pas à trouver un moyen pour faire recharger une partie de ma page ou filouter en faisant croire à un changement de sélection dans la liste.

    Des idées ?

    Désolé si je n'ai pas été clair

    Merci d'avance.

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    Est ce que cela marche avec le choix 1 ?

    As tu mis l'attribut saveState de la datatable à true ?

    tu met bien ton bean B à jour (qui en scope session si j'ai bien compris). le bean A pioche t-il les infos dans le bean B ? Si oui comment ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut
    J'ai commis une petite erreur, c'est pas une dataTable mais une dataList (issue de http://myfaces.apache.org/extensions).
    - Cela ne fonctionne pas non plus avec le choix 1 (qui est de même impacté par des champs saisies en A).
    - Je n'ai pas mis d'attribut saveState sur la dataList (est-il à true ou false par défaut?)
    - Le bean A ne pioche pas d'info dans le Bean B.
    C'est une appli de compta. On renseigne des montants dans A et ceux-ci sont réutilisés à d'autres endroits de l'appli.
    - Les bean A et B sont bien en scope session. J'ai essayé de mettre B en request, mais cela n'est pas satisfaisant (rechargement de la page B toujours identique, peu importe l'action faite dessus).

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut Eureka !
    Bon, j'ai réussi à résoudre mon problème.
    Lorsque l'on clique sur le commandLink pour afficher ma page B, on est dirigé vers une page B_redirect, qui supprime le bean de la session et redirige vers ma page B. Comme ça, elle est reconstruite. Un gros défaut quand même, elle est reconstruite à chaque fois. Il devrait être possible de recréer le contenu des dataLists, mais pour l'instant ça marche.

    Le code de ma page B_redirect.jsp
    ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getSession().removeAttribute("monBeanB");
    response.sendRedirect("B.jsf");

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    pour passer de B à A, utilises-tu un command button avec attribute immediate à true?

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut
    J'ai un menu sur la gauche qui reste au cours de ma nivigation. Il est composé d'un PanelNavigation contenant des commandNavigation. Les 2 sont des tags myfaces.apache.org/extensions.
    Un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <x:panelNavigation id="nav"
                  styleClass="navigation"
                  separatorClass="navseparator"
                  itemClass="navitem"
                  activeItemClass="navitem_active"
                  openItemClass="navitem_open"   >
     
     
        <x:commandNavigation id="nav_1" value="#{menus.menu1}" action="#{menus.getLien1}" rendered="#{menus.menu1 ne ''}" />
    </x:panelNavigation>.

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    le composant myfaces que tu utilises pour ta navigation a l'attribut immediate forcé à true (j'ai jeté un coup d'oeil dans le code décompilé)
    public boolean isImmediate()
    {
    return true;
    }
    du coup, quand tu cliques sur ta commande de navigation, les valeurs de ton formulaire ne sont pas persistées dans le bean.
    Malheureusement, à part un bouton sur ton formulaire demandant à l'utilisateur de sauvegarder avant l'utilisant de la navigation, je ne vois pas trop comment faire....

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

Discussions similaires

  1. Détruire un bean session JSF
    Par toutoune60 dans le forum JSF
    Réponses: 18
    Dernier message: 05/09/2008, 12h35
  2. Redirection après expiration d'un bean session?
    Par toutoune60 dans le forum JSF
    Réponses: 4
    Dernier message: 26/02/2007, 18h17
  3. Rafraîchir une jsp avec bean session perdu ; )
    Par stongolm dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/02/2007, 13h44
  4. [Struts] Recuper une référence d'un bean session
    Par nicoo dans le forum Struts 1
    Réponses: 6
    Dernier message: 07/09/2005, 14h26
  5. [Servlet - JSP] bean session sous was
    Par piwai dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/08/2005, 10h00

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