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 enregistrement JPA+JSF


Sujet :

JSF Java

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut Supprimer un enregistrement JPA+JSF
    Bonjour à tous.
    J'ai un problème de suppression d'enregistrements avec JPA+JSF.
    Avant de vous décrire le problème je vous invite à bien regarder l'image suivante :

    Nom : Capture.PNG
Affichages : 301
Taille : 4,3 Ko

    En effet,mon souci est le suivant : si je tente de supprimer un enregistrement autre que celui qui se trouve à la première position,c'est toujours celui de la première position qui est supprimé,autrement dit,celui ayant le plus petit identifiant car les enregistrements sont ordonnés par ordre croissant d'identifiants.
    Par exemple sur l'image ci-dessus,si je supprime "ordinateur" ou "Céréale" de la liste alors c'est "Boisson" qui sera supprimée.

    Ci-dessous le code des différentes méthodes chargées de réaliser la suppression :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    package Objets_EJBStatelless;
     
    import java.util.List;
     
    import javax.ejb.Stateless;
    import javax.faces.bean.ManagedBean;
    import javax.faces.model.DataModel;
    import javax.faces.model.ListDataModel;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.TypedQuery;
     
    import Objets_EJBEntity.TypeProduit_Entity;
     
    @Stateless
    public class TypeProduit_EJBStatelless {
     
    	private static final String Liste_DesTypes = "SELECT t FROM TypeProduit_Entity t";
    	private DataModel<TypeProduit_Entity> liste_EN_DataModel;
    	private List<TypeProduit_Entity> liste;
     
           @PersistenceContext(unitName = "Gestion_Stock")
    	private EntityManager interaction_Avec_BDD;
     
            public List<TypeProduit_Entity> getListe() {
    		try{
    			TypedQuery<TypeProduit_Entity> les_TypesProduits = interaction_Avec_BDD.createQuery(Liste_DesTypes,   TypeProduit_Entity.class);
    			return les_TypesProduits.getResultList();
    		}catch(DAOException d){
    			throw new DAOException(d);
    		}
    	}
     
          public DataModel<TypeProduit_Entity> getListe_EN_DataModel() {
    		liste_EN_DataModel= new ListDataModel<TypeProduit_Entity>();
    		liste_EN_DataModel.setWrappedData(getListe());
    		return liste_EN_DataModel;
    	}
     
         public void supprimerTypeProduit(){
    		try{
    			TypeProduit_Entity tpe = getListe_EN_DataModel().getRowData();
    			interaction_Avec_BDD.remove(interaction_Avec_BDD.merge(tpe));
    		}catch(DAOException d){
    			throw new DAOException(d);
    		}
    	}
     
    }
    Pour le backing-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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    package Gestionnaire_DEntite;
     
    import java.io.Serializable;
    import java.util.List;
     
    import javax.ejb.EJB;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.context.FacesContext;
     
    import Objets_EJBEntity.TypeProduit_Entity;
    import Objets_EJBStatelless.TypeProduit_EJBStatelless;
     
    @ManagedBean
    public class Enregistrer_TypeProduit implements Serializable {*
     
    private TypeProduit_Entity typeProduit;
     
    	public Enregistrer_TypeProduit(){
    		typeProduit = new TypeProduit_Entity();
    	}
    	@EJB
    	private TypeProduit_EJBStatelless typeProduitState;
     
     
    	public TypeProduit_Entity getTypeProduit() {
    		return typeProduit;
    	}
     
         public void supprimer(){
    		typeProduitState.supprimerTypeProduit();
    	}
    }
    Et enfin voilà comment j'ai défini le lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <h:commandLink action = "#{enregistrer_TypeProduit.supprimer}" immediate = "true">
                        <h:graphicImage url = "/Image/sup.png" title = "Supprimer"/>
    </h:commandLink>
    Si quelqu'un a une idée je suis à l'écoute.Merci d'avance!!!

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    peux-tu nous donner le code complet du fichier xhtml?
    eric

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Salut.
    Voici le code du fichier xhtml :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    <!DOCTYPE html>
    <html lang="fr"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
    <title></title>
    <h:outputStylesheet library="default" name="css/style.css"/>
    <h:outputStylesheet library="default" name="css/TableCSSCode.css"/>
    </h:head>
    <h:body>
         <h:form id = "FormulaireCreationType">
             <fieldset>
                 <legend>Enregistrement d'un nouveau type</legend>
     
                 <h:outputLabel for = "nomType">Nom du type : <span class="requis">*</span></h:outputLabel>
                 <h:inputText id = "nomType" value = "#{enregistrer_TypeProduit.typeProduit.nomType}">
                     <f:ajax event="blur" render="nomTypeMessage"/>
                 </h:inputText>
                 <h:message for = "nomType" id = "nomTypeMessage" errorClass="erreur"/>
                 <br/>
     
                 <h:commandButton value = "Enregistrer" action = "#{enregistrer_TypeProduit.enregistrer}" styleClass="sansLabel"> 
                    <f:ajax execute="@form" render="@form" />
                 </h:commandButton>
                 <br/>
                 <h:messages globalOnly = "true" infoClass="info"/>
               </fieldset>
     
        <br/><br/>
        <fieldset>
               <legend>Liste des types disponibles</legend>
             <h:dataTable value = "#{enregistrer_TypeProduit.liste_EN_JSF}" var = "typeproduit" headerClass = "entete">
                 <h:column>
                   <f:facet name="header">
                      <h:outputText value="Libellé du type" />
                   </f:facet>
                   <h:outputText value="#{typeproduit.nomType}">
                   </h:outputText>
                 </h:column>
     
                <h:column>
                   <f:facet name="header">
                     <h:outputText value="Modifier"/>
                   </f:facet>  
                      <h:commandLink action = "#{enregistrer_TypeProduit.editerTypeProduit}" immediate = "true">
                           <h:graphicImage url = "/Image/modif.png" title = "Modifier"/>
                      </h:commandLink>
                </h:column>
     
                <h:column>
                   <f:facet name="header">
                     <h:outputText value="Supprimer"/>
                   </f:facet>  
                     <h:commandLink action = "#{enregistrer_TypeProduit.supprimer}" immediate = "true">
                        <h:graphicImage url = "/Image/sup.png" title = "Supprimer"/>
                     </h:commandLink>
                </h:column>
              </h:dataTable>             
         </fieldset>
       </h:form>
     
    </h:body>
    </html>

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    je ne vois pas la declaration de
    dans la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Enregistrer_TypeProduit
    eric

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    salut,
    je ne vois pas la declaration de
    dans la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Enregistrer_TypeProduit
    eric
    Salut,
    Au moment où j'ai créé cette discussion liste_EN_DataModel est le nom que j'ai donné à la variable mais j'ai changé en liste_EN_JSF pour rendre clair mes variables et méthodes.

Discussions similaires

  1. Supprimer un enregistrement
    Par Riouxe21 dans le forum ASP
    Réponses: 14
    Dernier message: 16/07/2004, 17h43
  2. HELP!Comment supprimer des enregistrements de tables jointes
    Par ROOTPARIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/06/2004, 16h41
  3. Supprim un enregistrement de table2 si le même dans table1
    Par arno24 dans le forum Bases de données
    Réponses: 15
    Dernier message: 27/02/2004, 22h40
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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