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 :

a4j, redirect et request lifecycle


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut a4j et request lifecycle (manage bean reconstruit)
    Bonjour,
    Je viens de constater que lorsque ma navigation-rule est avec du redirect, dès lors toute requête ajax (<a4j:commandLink...>) entraine la creation d'un nouveau ManagedBean.
    - ce qui me pose des pbs car les attributs sont donc réinitialisés
    - c'est une perte de temps (je refais des accès BD dans init()).
    Est-ce qu'il y a un moyen d'éviter ça, ou dois-je me restreindre au forward dès lors que j'ai du a4j ??
    Mon Managed bean est de scope request.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 146
    Par défaut
    Bonjour,
    il faut éviter les accès BD dans init() ou les getter : surtout avec les bean en request (que lorsque c nécessaire)
    essaye avec a4j:keepAlive avec ajaxOnly="true"
    le bean ne sera ré instancier l' hors d'une requête Ajax .

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut
    Bon en fait mon pb n'est pas lié au redirect dans ma navigation-rule.
    Il se produit dans certains cas que je n'arrive pas à cerner.

    wajdopovitch, je n'ai pas d'accèsBD dans les getter. PAr contre, j'ai lu qu'on pouvait dans init (avec annotaition @PostConstruct) car il ne devrait etre appelé que 1 fois pour toutes.

    Sauf que dans mon cas mes requetes ajax entrzinent la re-création du managed bean. J'ai tenté avec a4j:keepAlive mais sans succès pour l'instant.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut
    Bonjour,
    je reviens sur mon pb qui est tjs là : mon managed bean "dataBean" (scope request) est recréé sur chaque requete ajax du poll.
    Je simplifie un peu (j'utilise facelets) mais voici grosso modo ce qu'il y a dans ma page:
    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
     
    <a4j:region>
      <a4j:form>
        <a4j:poll ajaxSingle="true" immediate="true" interval="30000" reRender="alerts" limitToList="true" />
      </a4j:form>
    </a4j:region>
    ...
    <a4j:outputPanel id="alerts"><h:outputText value="#{alertBean.count}" /></a4j:outputPanel>
    ...
    <a4j:form>
      <a4j:region>
        <a4j:commandLink action="#{dataBean.save}" reRender="infoPanel">
          <h:outputText value="enregistrer"/>
        </a4j:commandLink>
        <a4j:outputPanel id="infoPanel">
        ...
        </a4j:outputPanel>
      </a4j:region>
    </a4j:form>

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut
    Tout n'est pas encore très clair pour moi, mais bon je m'en suis sorti pour cette fois-ci.
    J'ai utilisé ce wajdopovitch m'a conseillé, en le placant enfin au bon endroit (voir aussi cet article ...2009/07/view_scope_in_richfaces).
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ...
    <a4j:form>
      <a4j:keepAlive beanName="dataBean" ajaxOnly="true" />
      <a4j:region>
        <a4j:commandLink action="#{dataBean.save}" reRender="infoPanel">
          <h:outputText value="enregistrer"/>
        </a4j:commandLink>
        <a4j:outputPanel id="infoPanel">
        ...
        </a4j:outputPanel>
      </a4j:region>
    </a4j:form>
    ...

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

Discussions similaires

  1. Redirection JSP request.isUserInRole
    Par Vinc06 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 05/05/2015, 10h53
  2. request.querystring + response.redirect
    Par alicia26 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 14/08/2008, 20h24
  3. Redirect, Session et Request
    Par coyote999 dans le forum Struts 1
    Réponses: 11
    Dernier message: 20/07/2007, 16h09
  4. Au sujet du Request LifeCycle
    Par Alec6 dans le forum JSF
    Réponses: 1
    Dernier message: 01/05/2007, 15h52
  5. [reseaux] redirection de flux
    Par Olive1808 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 12/08/2002, 09h24

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