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ème avec a4j:outputPanel (richfaces)


Sujet :

JSF Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut problème avec a4j:outputPanel (richfaces)
    Bonjour,
    j'ai un problème avec une page dans laquelle j'utilise un <a4j:outputPanel ajaxRendered="true">, ce que je veux faire est : selon la liste déroulante afficher ou faire diparaitre une table <rich:dataTable>, je vous met en gros mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <h:selectOneMenu  id="liste" styleClass="selectOneMenuStyle" value="#{MyManagementBean.selectedListe}" >
                                                <f:selectItems value="#{MyManagementBean.selectedListe}"/>
                                                <a4j:support event="onchange" action="#{MyManagementBean.validateSelectedCriteria}" ajaxSingle="true"/>
                                            </h:selectOneMenu>
    Ensuite la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <a4j:outputPanel id="ajaxPanel" ajaxRendered="true">
                            <rich:dataTable value="#{MyManagementBean.maList}"
                                                    binding="#{MyManagementBean.tableDT}"
                                                    headerClass="dataTableHeaderStyle"
                                                    var="varialble"
                                                    rows="11"
                                                    rowKeyVar="row"
                                                    width="100%"
     
                                                    id="table">
     
     
                 </a4j:outputPanel>
    je fais le Binding de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private HtmlDataTable tableDT = new HtmlDataTable();
    Le problème consiste à un message d'erreur qui s'affiche non pas lorsque je charge la page pour la 1ère fois, mais lorsque je navigue via le menu, et je retourne à ma page, là il me sort qu'un id est dupliqué (l'id de la table précisément), alors que j'utilise un id unique (même dans toutes mes autres pages).
    Et bizarrement, quand j'enlève le Binding sur ma table, ça semble marcher correctement!
    Merci de m'aider

  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 n'a pas besoin de binding pour faire ce que tu veux,
    Je suppose que le bean est en session, les composants UI doivent rester dans un scope request, c'est pour ça que tu as le problème de duplicate id.

    ajoute un rendered à la table et fais le reRender sur le outputPanel que tu n'est pas obligé de le rendre ajaxRendered.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse Sniper37,
    effectivement le bean est en session, et j'ai besoin de binding non pas pour faire le reRender seulement, mais aussi je l'utilise par exemple pour compter le nombre de lignes de ma table.
    je savais pas que les composants UI doivent rester dans un scope request, car c'est seulement dans cette page que j'ai ce genre de problème.

  4. #4
    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
    oui c'est un problème, mais ça ne survient pas à chaque requete, sauf si tu sérialise le bean, dans ce cas, il faut mettre le composant UI transient.

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    oui c'est un problème, mais ça ne survient pas à chaque requete, sauf si tu sérialise le bean, dans ce cas, il faut mettre le composant UI transient.
    J'ai pas bien compris ce que tu veux dire par "sérialiser un bean" et rendre un composant UI transient
    Peux tu m'expliquer un peu plus s'il te plait?

  6. #6
    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
    si le bean est Serializable, le composant ne doit pas etre serializable, donc, il faut le déclarer transient.

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Si j'ai bien compris vous parlez de la façon suivante d'implémentation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MyManagedBean implements serializable
    Mais pour mes javabeans je fais juste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MyManagedBean

  8. #8
    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
    ok le problème vient alors que du binding..
    test sans binding tu verra..
    Si vraiment tu es obligé d'utiliser le binding, met le composant dans un scope request.

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour ton aide Sniper37

Discussions similaires

  1. richfaces: probléme avec a4j:commandButton
    Par Narouto dans le forum JSF
    Réponses: 5
    Dernier message: 08/06/2011, 22h54
  2. Problème avec a4j:commandButton (richfaces)
    Par elbissat dans le forum JSF
    Réponses: 3
    Dernier message: 29/05/2009, 14h27
  3. Problèmes avec a4j dans richfaces
    Par jean-pierre96 dans le forum JSF
    Réponses: 4
    Dernier message: 02/02/2009, 18h04
  4. Problème avec <a4j:support/>
    Par romaintaz dans le forum JSF
    Réponses: 2
    Dernier message: 17/10/2007, 17h12
  5. ajax4jsf: problème avec <a4j:include>
    Par heureuxLesOublieux dans le forum JSF
    Réponses: 3
    Dernier message: 18/06/2007, 10h30

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