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 :

bouton d'action dans une Table Data


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut bouton d'action dans une Table Data
    Bonjour,

    j'ai actuellement une table data avec des infos dedans.
    le remplissage de cette table se fait très bien, aucun problème.

    j'essaye maintenant de mettre des boutons d'action dedans.
    pour cela, j'ai fouillé dans la FAQ et trouvé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h:dataTable value="#{monBean.cars}" var="c" >
      <h:column>
        <h:commandButton value="supprimer" action="#{monBean.delete}">   
          <f:setPropertyActionListener value="#{c}"
    		target="#{monBean.selectedCar}" />
        </h:commandButton>    
      <h:column>
    </h:dataTable>
    le souci, c'est que le tag setPropertyActionListener n'est pas reconnu.
    de plus, le composant commandButton "must be embedded in an form"
    de plus, au niveau du "value="#{c}"", il n'est pas précisé dans la FAQ s'il faut générer les getters et setters, ni comment fonctionne la bête.

    bref, j'ai rien compris, mais tout ce que je sais, c'est que ça fronctionne pas.

    pour les autres solutions proposées dans la FAQ pour récupérer la ligne active d'une data table, je n'y ai rien compris, donc choisi de ne pas les utiliser.

    quelqu'un peut m'aider ?

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut,
    As tu importé le taglib/namespace f (core) dans ta page JSP ou facelets ? (en haut de la page, tu trouveras que c'est fait pour le "h").

    Et un commandButton ne marche que s'il est dans un composant <h:form>.
    Tu peux donc soit définir un form autour du bouton ou autour de la table.

  3. #3
    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 : 47
    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 mouaa Voir le message
    le souci, c'est que le tag setPropertyActionListener n'est pas reconnu.
    Il faut ajouter la taglib f dans la définition de tes taglibs dans l'entête de ta JSP / XHTML...
    Par exemple en XHTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:f="http://java.sun.com/jsf/core"
    Citation Envoyé par mouaa Voir le message
    de plus, le composant commandButton "must be embedded in an form"
    Entoure ton datatable d'un <h:form> par exemple, sans cela, il ne pourra pas fonctionner.

    Citation Envoyé par mouaa Voir le message
    de plus, au niveau du "value="#{c}"", il n'est pas précisé dans la FAQ s'il faut générer les getters et setters, ni comment fonctionne la bête.
    Toute propriété accessible dans une expression EL doit disposer d'un getter. Ensuite, le setter doit être défini en fonction du composant qui fait appel à cette propriété (par ex. c'est inutile si tu utilises ta propriété seulement dans un <h:outputText/>, mais obligatoire si c'est dans un <h:inputText/>).

    Citation Envoyé par mouaa Voir le message
    pour les autres solutions proposées dans la FAQ pour récupérer la ligne active d'une data table, je n'y ai rien compris, donc choisi de ne pas les utiliser.
    Il y a en effet 3 solutions qui ne sont guère complexes à mettre en application.
    Dis nous plutôt ce que tu ne comprends pas...
    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

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    euh... import des taglib... on parle bien de la même chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@taglib	uri="http://java.sun.com/jsf/html" prefix="h"%>
    j'ai fait ces imports en début de page.
    c'est suffisant ?

    pour info, je n'ai pas de soucis avec les tags <h:column> ou <f:facet> par exemple....

    pour les autres points, je regarde et je vous dis ce que ça donne.

    merci pour le coup de main !

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    une fois ta table dans un form, ton commandbutton doit savoir marcher sans ce propertyActionlistener. Par contre, chose très importante, il faut que la liste correspondant à la datatable existe toujours lorsque tu fera le submit, car jsf va faire çà

    réception de la requete, phase apply request value
    passage dans chaque row du table en utilisant la liste mentionné en value=
    lorsqu'on est à la ligne 'n' (n étant la ligne où t'a cliqué), passage dans le commande button qui enregistre l'action

    autres phases jsf
    phase 'action' (qui ne se déclenche que si on est passé dans le bouton plus haut)

    Si ta liste n'existe plus, jsf ne détectera pas l'action, puisque le bouton a forciori n'existe plus.

  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 : 47
    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 mouaa Voir le message
    euh... import des taglib... on parle bien de la même chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@taglib    uri="http://java.sun.com/jsf/html" prefix="h"%>
    j'ai fait ces imports en début de page.
    c'est suffisant ?

    pour info, je n'ai pas de soucis avec les tags <h:column> ou <f:facet> par exemple....

    pour les autres points, je regarde et je vous dis ce que ça donne.

    merci pour le coup de main !
    Oui, c'est bien ça.
    Maintenant, si je ne dis pas de bêtises, f:setActionPropertyListener n'a été ajouté que dans la version 1.2 de JSF, pas la 1.1. Tu utilises quelle version de JSF?
    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 éclairé
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Par défaut
    je ne sais pas du tout quelle version j'utilise...

    comment on peut savoir ça ?

    Citation Envoyé par tchize_ Voir le message
    chose très importante, il faut que la liste correspondant à la datatable existe toujours lorsque tu fera le submit
    comment faire ?

    mettre le bean en scope session ?

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui, mettre le scope en session, c'est la méthode simple, mais pas très évolutive car ca empêche l'utilisateur d'avoir deux fois la table dans deux pages différentes avec des valeurs différentes. D'autres solution existent, comme tomahawk qui permet de conserver certaines valeurs d'une requete a l'autre, passer les paramètres créant ton bean sous f:param et utiliser les managed properties dans jsf (pour initialiser des valeurs du bean request scope avant de l'utiliser)

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

Discussions similaires

  1. [WD17] Bouton de navigation dans une table
    Par regodilon dans le forum WinDev
    Réponses: 1
    Dernier message: 13/06/2013, 08h04
  2. Réponses: 7
    Dernier message: 08/03/2007, 16h42
  3. Bouton pour confirmer un ajout dans une table sous Access
    Par cestimagik dans le forum Access
    Réponses: 3
    Dernier message: 31/12/2006, 10h32
  4. bouton qui ajoute un enregistrement dans une table
    Par petitours dans le forum Access
    Réponses: 1
    Dernier message: 06/12/2006, 13h33
  5. Réponses: 17
    Dernier message: 02/02/2006, 22h31

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