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 :

Pb de commandLink dans un dataTable


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 69
    Par défaut Pb de commandLink dans un dataTable
    Bonjour à tous,
    je n'arrive pas du tout à comprendre ce qui se passe.
    Dans ma page jsf j'ai deux dataTable.

    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
    20
    h:panelGrid columnClasses="legend_test">
                         <h:outputText value="Requêtes XMLA"/>
                    </h:panelGrid>
                    <h:dataTable value='#{uploadrequetes.requetesXMLA}' var='item' border="0" cellpadding="2" cellspacing="4" rowClasses="paire,impaire" headerClass="title_datatable">                   
                        <h:column>   
                            <h:commandLink styleClass="lien_visualisation" value="#{item.requeteIntitule}" action="#{uploadrequetes.visualisationRequeteXmla}"/>
                                <f:param name="requeteId" value="#{item.requeteId}" />
                        </h:column>                             
                    </h:dataTable>  
                    <br>
     
                    <h:panelGrid columnClasses="legend_test">
                         <h:outputText value="Requêtes Mondrian"/>
                    </h:panelGrid>               
                    <h:dataTable value='#{uploadrequetes.requetesMondrian}' var='item' border="0" cellpadding="2" cellspacing="4" rowClasses="paire,impaire" headerClass="title_datatable">                   
                        <h:column>   
                            <h:commandLink styleClass="lien_visualisation" value="#{item.requeteIntitule}" action="#{uploadrequetes.visualisationRequete}"/>
                                <f:param name="requeteId" value="#{item.requeteId}" />
                        </h:column>                             
                    </h:dataTable>
    Les informations affichées proviennent du résultat d'une requête sur la base de données. Je mets un lien et le problème est à ce niveau la. Quand je clique sur ce lien il fait appel à une méthode du bean qui réalise des traitements et m'envoit sur une autre page.

    Quand je clique sur un lien du premier tableaux j'ai une exception du type :
    javax.servlet.ServletException: #{uploadrequetes.visualisationRequeteXmla}: javax.faces.el.EvaluationException: java.lang.IllegalArgumentException
    Quand je clique sur le lien du deuxième tout vas bien.

    Je pensais qu'il y avait une erreur dans le premier tableau, mais j'ai dans ma page jsp échangé la place des dataTable. Le clique sur le lien du deuxième tableau ( qui était le premier avant) fonctionne. Et le clic sur un lien du premier tableau ( qui était le deuxième) ne fonctionne plus. Il m'affiche le même message d'erreur ( la même exception).

    Merci de votre aide

    @+

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Pour ce qui est de l'exception, je ne sais pas d'où ça vient.
    Mais je peux te conseiller d'éviter de mettre les ID de tes éléments en param, ils seront affichés et c'est pas très bon. Question de sécurité.

    A la place je pe te proposer d'avoir des liens identiques sur chaque ligne (l'élément discriminant sera généré par JSF avec des ID qui n'ont aucun rapport avec ta base de données). A cela tu ajoute un binding (attribut binding="...") de ta dataTable vers un

    private HtmlDataTable tonDataTable;

    dans ton bean.

    Ensuite dans ton action de clic tu peux faire :

    tonDataTable.getRowData()

    pour récupéré l'objet sélectionné

    ou

    tonDataTable.getRowIndex()

    pour récupéré seulement l'index sélectionné.

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    Personnellement, je wrappe toutes mes listes à afficher dans une datatable dans un object ListDataModel. Le constructeur prend la liste à afficher et l'attribut value de la datatable est bindé vers cette ListDataModel. Ainsi, quand une action est déclenchée au niveau d'une row, dans la méthode appelée par l'action, tu récupères ton ListDataModel et tu demandes getRowData() ainsi tu auras la ligne courante de ta liste sur laquelle l'action a été déclenchée. Cela évite le binding de composant.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    En voila une chose interessante que je ne connaissais pas : Merci

Discussions similaires

  1. h:form et CommandLink dans DataTable
    Par kimlaw95 dans le forum JSF
    Réponses: 3
    Dernier message: 29/04/2010, 18h53
  2. commandLink dans une datatable
    Par Viscapon dans le forum JSF
    Réponses: 7
    Dernier message: 10/05/2009, 22h34
  3. commandLink dans une datatable
    Par troubleshooting dans le forum JSF
    Réponses: 2
    Dernier message: 20/04/2009, 13h03
  4. [RichFaces] CommandLink dans une dataTable
    Par lemaxou64 dans le forum JSF
    Réponses: 1
    Dernier message: 04/02/2009, 11h18
  5. h:commandlink dans datatable
    Par kam81 dans le forum JSF
    Réponses: 1
    Dernier message: 29/10/2008, 11h32

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