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 :

[TABLE] Récupérer la valeur d'un champs d'une ligne


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut [TABLE] Récupérer la valeur d'un champs d'une ligne
    Bonjour,

    Alors voila je dispose d'un tableau (component JSF) qui affiche un id de livre (depuis la BDD) et un bouton.

    Je souhaiterais en cliquant sur le bouton d'une des lignes récupérer l'id affiché à la même ligne (pour pouvoir ensuite le rajouter dans une liste) et je ne vois vraiment pas comment faire ça en JSF.

  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
    Bonjour,

    Si tu ne vois pas comment le faire..consulte la

    Trois solutions sont proposées.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    J'ai regardé du côté de la FAQ mais cette dernière n'est pas adapté aux composant Woodstock que j'utilise

    En effet, au lieu d'utiliser un <h:dataTable /> j'utilise un <webuijsf:table /> et il ne supporte pas les DataModel.

    Voici mon tableau :

    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
    21
    22
    23
    24
    25
     
    <webuijsf:table augmentTitle="false" binding="#{Titles.table2}" id="table2" paginateButton="true" paginationControls="true"
                                style="left: 168px; top: 168px; position: absolute; width: 432px" title="Titres disponibles" width="432">
                                <webuijsf:tableRowGroup emptyDataMsg="Il n'y a aucun livre actuellement disponible" id="tableRowGroup1" rows="10"
                                    sourceData="#{SessionBean.bookList}" sourceVar="currentRow">
                                    <webuijsf:tableColumn headerText="idBook" id="tableColumn1" sort="idBook">
                                        <webuijsf:staticText binding="#{Titles.idBook}" id="idBook" text="#{currentRow.value['idBook']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="title" id="tableColumn2" sort="title">
                                        <webuijsf:staticText id="staticText3" text="#{currentRow.value['title']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="author" id="tableColumn3" sort="author">
                                        <webuijsf:staticText id="staticText4" text="#{currentRow.value['author']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="publisher" id="tableColumn4" sort="publisher">
                                        <webuijsf:staticText id="staticText8" text="#{currentRow.value['publisher']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="stock" id="tableColumn5" sort="stock">
                                        <webuijsf:staticText id="staticText9" text="#{currentRow.value['stock']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn id="ajout">
                                        <webuijsf:button actionExpression="#{Titles.button3_action}" id="boutonAjout" text="Ajouter au panier"/>
                                    </webuijsf:tableColumn>
                                </webuijsf:tableRowGroup>
                            </webuijsf:table>
    J'ai regardé du côté des fonctions disponibles pour ce composant Table mais je n'ai rien trouvé de similaire au "getRowData()".

    Ce que je veux récupérer c'est le Titles.idBook de ma ligne à travers mon bouton "Ajouter au panier".

  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
    et la troisième solution?

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    La troisième solution ne semble pas adaptée, ou alors c'est moi qui l'utilise mal car j'obtiens cette exception lors du clic sur le bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exception Details: java.lang.IllegalArgumentException 
      Cannot convert com.sun.data.provider.impl.TableRowDataProvider@1aa6b1f of type class com.sun.data.provider.impl.TableRowDataProvider to class bdd.objects.Book
    Pourtant j'ai ce code JSF :

    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
    21
    22
    23
    24
    25
    26
    27
     
      <webuijsf:table augmentTitle="false" binding="#{Titles.table2}" id="table2" paginateButton="true" paginationControls="true"
                                style="left: 168px; top: 168px; position: absolute; width: 432px" title="Titres disponibles" width="432">
                                <webuijsf:tableRowGroup emptyDataMsg="Il n'y a aucun livre actuellement disponible" id="tableRowGroup1" rows="10"
                                    sourceData="#{SessionBean.bookList}" sourceVar="currentRow">
                                    <webuijsf:tableColumn headerText="idBook" id="tableColumn1" sort="idBook">
                                        <webuijsf:staticText binding="#{Titles.idBook}" id="idBook" text="#{currentRow.value['idBook']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="title" id="tableColumn2" sort="title">
                                        <webuijsf:staticText id="staticText3" text="#{currentRow.value['title']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="author" id="tableColumn3" sort="author">
                                        <webuijsf:staticText id="staticText4" text="#{currentRow.value['author']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="publisher" id="tableColumn4" sort="publisher">
                                        <webuijsf:staticText id="staticText8" text="#{currentRow.value['publisher']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn headerText="stock" id="tableColumn5" sort="stock">
                                        <webuijsf:staticText id="staticText9" text="#{currentRow.value['stock']}"/>
                                    </webuijsf:tableColumn>
                                    <webuijsf:tableColumn id="ajout">
                                        <webuijsf:button actionExpression="#{Titles.button3_action}" id="boutonAjout" text="Ajouter au panier">
                                            <f:setPropertyActionListener value="#{currentRow}" target="#{SessionBean.selectedBook}" />
                                        </webuijsf:button>
                                    </webuijsf:tableColumn>
                                </webuijsf:tableRowGroup>
                            </webuijsf:table>
    Comme vous pouvez le voir j'ai rajouté la setPropertyActionListener.

    J'ai déclaré un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Book selectedBook
    dans mon SessionBean.

    Enfin, dans la fonction d'action de bouton je récupère ma session pour récupérer mon book et son id comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public String button3_action() {
            // TODO: Process the action. Return value is a navigation
            // case name where null will return to the same page.
            //getSessionBean().MonPanier(id);
            //String currentIdBook = idBook.toString();
     
            Integer id = getSessionBean().getSelectedBook().getIdBook();
     
     
            return null;
        }
    Je comprends l'erreur qui vient apparemment du fait que j'essaie de convertir un objet "tableau" en "Book" mais voila je pensais que ceci serait fait implicitement et sans erreur...

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    J'ai réussi à régler le problème en améliorant le setPropertyActionListener pour qu'il récupère mon id directement au lieu de passer par un objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <f:setPropertyActionListener target="#{SessionBean.selectedIdBook}" value="#{currentRow.value['idBook']}"/>
    et dans mon managedBean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public String button3_action() {
            // TODO: Process the action. Return value is a navigation
            // case name where null will return to the same page.
            //getSessionBean().MonPanier(id);
            //String currentIdBook = idBook.toString();
     
            Integer iii = getSessionBean().getSelectedIdBook();
     
            return null;
        }
    Voila, problème résolu merci beaucoup Sniper

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

Discussions similaires

  1. [AC-2003] Récupérer la valeur d'un champ dans une table
    Par lex89 dans le forum VBA Access
    Réponses: 4
    Dernier message: 15/05/2012, 10h35
  2. Réponses: 2
    Dernier message: 29/06/2010, 10h04
  3. Réponses: 3
    Dernier message: 11/10/2007, 12h32
  4. [MySQL] Récupérer la valeur d'un champ d'une table juste après l'avoir inséré
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/05/2007, 22h24
  5. Récupérer la valeur d'un champ dans une requête
    Par romaintaz dans le forum JDBC
    Réponses: 7
    Dernier message: 18/08/2006, 09h13

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