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 :

Supprimer un element d'une table


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 78
    Par défaut Supprimer un element d'une table
    Salut,c'est la première application que je cree avec jsf,et je bloque sur la suppression d'une ligne de table ds une base de donnée(j'utilise hibernate pour le mapping).

    voici ma page jsp:
    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
    <f:view>
                <h1><h:outputText value="JavaServer Faces" /></h1>
                <h:form>
                    <rich:dataTable value="#{UserBean.personneList}" var="item"> 
                 <f:facet name="header"> <h:outputText value="Liste des livres"/> </f:facet>
                 <rich:column   style="font-size:15px">
                     <f:facet name="header"> <h:outputText value="Nom"/> </f:facet>
     
                        <h:outputText value="#{item.nom}"/>
     
                 </rich:column>
                 <rich:column  style="font-size:15px">
                    <f:facet name="header"> <h:outputText value="Prenom"/> </f:facet>
                    <h:outputText value="#{item.prenom}"/>
                </rich:column>
                 <rich:column style="font-size:15px" >
                     <f:facet name="header"> <h:outputText value=" "/> </f:facet>
                     <h:commandLink action="#{UserBean.supprimer}" value="delate">
                      <f:setPropertyActionListener value="#{item}" target="#{UserBean.selectedCar}" />
                  </h:commandLink>
                </rich:column>
            </rich:dataTable>
             <h:commandLink value="Ajouter une personne" action="go"/>
               </h:form>
            </f:view>
    et dans le 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
    15
    public void supprimer(){
            Session session= Mapping.HibernateUtil.currentSession();
            Transaction tx;
            tx=session.beginTransaction();
     Query query = session.createQuery("from Personne where idpersonne = :p");
            query.setParameter("p",selectedCar.getIdpersonne());
     
            Personne P = (Personne)query.list();
     
            session.update(P);
            tx.commit();
            this.setIdpersonne(null);
           this.setNom(null);
           this.setAge(null);
        }
    mais lorsque je click sur le boutton supprimer,rien ne se passe,l'element n'est pas supprimer.
    Avez vous une idée sur ce que peut etre la cause?Merci bcp pour votre aide

  2. #2
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut suppression
    Bonjour,

    sauf erreur de lecture tu écris delate au lieu de delete.
    Ensuite,il faut que tu donnes ton faces-config.xml pour voir comment
    tu réaffiches.
    Un conseil, active les LOGS et utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(DEBUG) {
                logger.info("monObjet::maméthode");
                logger.info( ce que tu veux voir............
            }
    J'ai eu beaucoup de mal à comprendre les notions d'actions en JSF
    cela te permettra de suivre les appels.
    Ensuite , utilises une couche "DAO" pour tes appels à ta base, cela te permettra de faire des tests unitaires sur la partie base de donnée pour faire simple.

    "I love unit-test"
    Olivier

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

    Tout d'abord, je te conseille d'utiliser l'une des 3 méthodes présentes dans la FAQ afin de sélectionner l'élement affiché sur la ligne. Cela simplifiera ton code.
    Ensuite, je ne vois pas où tu supprimes ta personne dans ton code Hibernate...

    Voici ce que tu pourrais faire donc :

    Dans le JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    <h:datatable ... binding="#{UserBean.table}">
        ...
        <h:commandLink value="Delete" action="#{UserBean.supprimer}"/>
        ...
    Dans le code Java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private HtmlDataTable table; // Getter et setter...
     
    public String supprimer() {
        Personne p = (Personne) table.getRowData();
        ...
        Query q = session.createQuery("delete from Personne where idpersonne = :id");
        q.setParameter("id", p.getIdpersonne());
        ...
        return "";
    }
    Là c'est le code court, mais il est vivement conseillé de déplacer toutes les méthodes d'accès aux données dans des DAO, elles mêmes appelées par une couche service. Les beans JSF appelerons alors cette couche service.
    Soit le bean JSF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public String supprimer() {
        Personne p = (Personne) table.getRowData();
        personneService.supprimerPersonne(p);
        ...
        return "";
    }
    Le service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void supprimerPersonne(Personne p) {
        // Eventuellement du code métier avant (tests, etc.)
        personneDao.supprimerPersonne(p);
    }
    Et enfin le DAO :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     public void supprimerPersonne(Personne p) {
        Query q = entityManager.createQuery("delete from Personne where idpersonne = :id");
        q.setParameter("id", p.getIdpersonne());
        ...
     }
    (j'ai fait pas mal de raccourci, mais bon, c'est l'idée)
    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

Discussions similaires

  1. supprimer les doublons dans une table
    Par mavean dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/06/2019, 13h26
  2. [langage] Supprimer un élément dans une liste
    Par myjuna dans le forum Langage
    Réponses: 15
    Dernier message: 06/08/2014, 11h49
  3. Comment supprimer les doublons d'une table?!
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/01/2006, 08h48
  4. Réponses: 17
    Dernier message: 18/03/2005, 15h56
  5. Supprimer un champ dans une table
    Par valerie90 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/08/2004, 09h53

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