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 :

Problèmes, Bean réinitialiser sans que je lui redemande


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Par défaut Problèmes, Bean réinitialiser sans que je lui redemande
    Bonjour,

    Voici pour vous un nouveau problèmes à ce tirer les cheveux (mais pourquoi ais-je choisi JSF!!!)

    Bon, j'ai un tableau et un bean associé, j'ai un bouton Ajouter, qui me permet d'afficher un formulaire dans un ModalPanel . Le bean du Tableau contient un objet User, qui est l'utilisateur affiché dans ce tableau, et je veux envoyer cette objet au Bean gérant le formulaire. J'ai utilisé un setPropertyActionListener pour cela. Jusque là aucun soucis.

    Le problème viens du fait que quand je clique sur le bouton, mon Bean gérant le tableau est réinitialisé (donc l'objet User est mit à null) et ensuite le User est envoyé au Bean du formulaire.

    Je ne comprend pas, ce n'est pas la première fois que je fais cela, et ça fonctionne bien habituellement!!!

    Pourquoi mon Bean est il réinitialisé?

    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
     
    <h:form id="historyTableForm">
    	<rich:dataTable id="historyTable"
    		onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
    		onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
    		cellpadding="0" cellspacing="0" width="400" border="0"
    		value="#{historyDataTableBean.history}" var="row">
    	<rich:column> .... Mon Tableau ... </rich:column>
    	</rich:dataTable>
    	<a4j:commandButton ajaxSingle="true" value="Ajouter"
    		oncomplete="Richfaces.showModalPanel('editHistoryPanel');"
    		reRender="historyRegisterForm">
    	<f:setPropertyActionListener value="#{historyDataTableBean.user}"
    		target="#{historyFormBean.user}" />
    	</a4j:commandButton>
    </h:form>

  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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Quel est le scope de ton bean, que tu as du définir dans le faces-config.xml ?
    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 confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Par défaut
    Il était en scope request, je l'ai mis en scope session et ça fonctionne, c'est bizarre... J'ai une autre situation du même type que celle-ci et je n'ai pas eu ce problème.

  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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Le principe d'un bean en scope Request est d'être (ré)initialiser à chaque nouvelle requête. Donc cela semble correspondre au comportement auquel tu es confronté...
    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 confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Par défaut
    Oui, je vois, mais c'est juste que cela fonctionnait avant dans un autre exemple. Et quand je clique sur le bouton, je ne fais qu'afficher un modelPanel, cela correspond a une nouvelle Requète?

  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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Citation Envoyé par FunkyBreizh Voir le message
    Oui, je vois, mais c'est juste que cela fonctionnait avant dans un autre exemple. Et quand je clique sur le bouton, je ne fais qu'afficher un modelPanel, cela correspond a une nouvelle Requète?
    Ca dépend, si ton clic ne fait qu'afficher un modal Panel, genre grâce à un onclick="Richfaces.showModalPanel('...'); return false;", alors ce n'est que du Javascript, et aucune requête n'est émise...
    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

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Par défaut
    Oui sauf que a la place de onclick, je met oncomplete, bon de toute façon le problème est réglé depuis que je l'ai mis en scope session, en tout cas, merci à toi.

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    Sinon, meilleure solution que de mettre en session, ce qui est plutôt sale.

    Tu fais du RichFaces alors profitons en : au début de ta page met <a4j:keepAlive beanName="nom_de_ton_bean" />.

    Cette balise a pour principe de prolonger la durée de vie de ton bean de requête en requête...

    Pour tout te dire, moi je l'utilise quasiment partout pour mes formulaires. Et encore quasiment... c'est juste pour laisser planer le doute ^^.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Par défaut
    Encore une dernière chose, car j'ai l'impression d'avoir mal compris.

    J'ai un formulaire et un Bean associé a ce formulaire, dans ce bean, j'ai un objet User. A la fin de ce formulaire j'ai un bouton modifier qui appel la méthode update du bean. Mon bean est en scope request, est ce normal qu'il se réinitialise quand je clique sur mon bouton mais avant qu'il est appelé la méthode update. J'étais persuader que le bean serait réinitialiser après l'appel à cette méthode.

    Je me trompe?

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    J'ai déjà observé la même chose. Le bean se réinitialise mais il réussit tout de même à traiter les informations.

    Il ne se réinitialise plus lorsqu'on utilise <a4j:keepAlive beanName="nom_de_ton_bean" /> dans la page... c'est la raison principale pour laquelle je l'utilise tout le temps.

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

Discussions similaires

  1. vba me change la variable sans que je lui demande !
    Par Daniela_ dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/10/2013, 15h32
  2. mon curl boucle sans que je lui demande
    Par speed034 dans le forum Langage
    Réponses: 1
    Dernier message: 16/09/2009, 05h40
  3. Il ne trouve pas ce que je lui demande !
    Par killprog dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/03/2006, 19h11
  4. Lancer une requette sql sans que celà soit visible
    Par frechy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 15h42
  5. Problèmes avec des nombres... que faire ?
    Par sducos81 dans le forum C++
    Réponses: 6
    Dernier message: 21/07/2005, 13h46

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