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 :

commandLink dans une datatable


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut commandLink dans une datatable
    Bonjour à tous,
    Je développe une interface qui propose à un administrateur une table employé avec une colonne suppression.

    Donc j'aimerais en cliquant sur supprimer que le système récupère l'utilisateur pour que je puisse le supprimer dans mon code.

    J'ai entendu aussi parler d'un bug entre les datatable et les commandLink.

    Pour information j'utilise jsf 1.1.0.1 .

    Si quelqu'un a un exemple de commandLink géré à l'intérieur d'une datatable qui permet une fonctionnalité comme celle de la suppression dans mon cas, je serai fort intéressé.

    Merci

  2. #2
    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 : 45
    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
    je vois pas de quel genre de bug tu parle, tu met le command link dans ta datatable et c'est tout.

    Par contre, tu dois t'assurer que ton datatable reste bien le meme entre le moment du rendu, et le moment de la requete suivante quand l'utilisateur clique. Comme datatable se repère aux rows, si les données change, quand tu va cliquer sur le delete de la 5ème ligne, tu risque d'effacer un autre 5ème.

    Le plus simple pour éviter ce problème, c'est de stocker les données concernées en session.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut
    Oui mais je dois dire que je suis un peu perdu sur ce qui est proposé comme solutions sur le net :

    Qu'est ce que je dois ajouter dans mon code pour que je recupère ma ligne et que je puisse la traitée dans mon bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <h:form enctype="multipart/form-data">
     
                 <h:dataTable value="#{bean.maList}"  var="maList"
            width="100%" border="1" >
    ...................
       <h:column>
                           <h:commandLink value="supprimer" action="#{bean.cible}" title=supprimer">
     
                            <f:param value="#{maList.employeid}" name="employeId"  />
     
                            </h:commandLink >
                      </h:column>
        </h:dataTable>
    le bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public String Cible() {
     
    //Comment dois-je recupérer mon employe ici ??
     
    //traitment pour la supression de l'employe
     
    }
    Il faut bien faire le lien entre la ligne employe cliqué et l'objet à supprimer dans la methode Cible () !

    Comment pourrais-je faire ce lien ?

  4. #4
    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 : 45
    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
    tu dois faire des getters et setters pour la propriété cible:


    public void setCible(String) , public String getCible()

    ensuite, tu met le code que tu veux dans ton action, c'est jsf qui se sera chargé au préalable d'appeler setcible avec la valeur soumise du formulaire.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Par défaut
    Cible() c'est pas une propriété c'est la methode chargé de supprimer mon objet lors du click sur mon lien (commandLink).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public String Cible() 
    	throws Exception{	
     
    		//recuperer mon objet
     
    //supprimer mon objet
     
    		return "mino" ;	 
    	}

  6. #6
    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 : 45
    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
    désolé, mal lu

    par contre, je ne pense pas qu'il soit toléré que ta méthode commence par un majuscule dans les specifications java bean. Ca pourrait donc etre la cause de problème.

    Tu ne pourra pas récupérer le row de l'action dans cible(). Ce que tu dois faire, c'est faire pointer la commande vers une méthode se trouvant dans tes objet contenus dans bean.maList.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <h:dataTable value="#{bean.maList}"  var="maList"
            width="100%" border="1" >
    ...................
       <h:column>
                           <h:commandLink value="supprimer" action="#{maList.supprimer}" title=supprimer">
                            </h:commandLink>
                      </h:column>
        </h:dataTable>
    ou alors, au vu de ton code, récupérer le employeId soumis par le browser et te baser là dessus (ce qui serait d'ailleurs encore plus propre, ca éviterais les risques en cas de changement de la liste en cours de route, puisque ce employeId est envoyé par le client.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public String Cible() {
     String employeId = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("employeId");
     //......
    }

Discussions similaires

  1. commandLink dans une datatable
    Par troubleshooting dans le forum JSF
    Réponses: 2
    Dernier message: 20/04/2009, 13h03
  2. [RichFaces] CommandLink dans une dataTable
    Par lemaxou64 dans le forum JSF
    Réponses: 1
    Dernier message: 04/02/2009, 11h18
  3. Réponses: 6
    Dernier message: 18/10/2006, 16h34
  4. Réponses: 3
    Dernier message: 19/07/2006, 14h28
  5. [C#] Modifier une valeur dans une DataTable
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/05/2005, 10h45

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