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 :

Editer un contact a partir d'un dataTable


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Par défaut Editer un contact a partir d'un dataTable
    Bonjour
    Je suis entrain de développer une application web pour mon PFE,
    et j'ai rencontré ce probleme:
    J'ai faits un richdataTable, et je veux editer la ligne sélectionné, mais ça marche pas.
    ça me faits pas la mise à jour et ne me rends aucune erreur
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <rich:dataTable value="#{jortControl.listJortss}" var="list">
      //liste de mes colonnes de données
     // puis la colonne contenant mon bouton d'Edit
    <rich:column>
        <a4j:commandButton image="/img/edit.png" ajaxSingle="true"
    	oncomplete="#{rich:component('monPanelEdit')}.show();" reRender="contactInfo">
    	<f:setPropertyActionListener value="#{list}"
    	target="#{monControl.selectedContact}" />
    	</a4j:commandButton>
      </rich:column>
     
    </rich:dataTable>
    Dans mon panel d'edit, je reçoit bien mes données relatifs à la ligne sélectionnée:
    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
    <rich:modalPanel id="monPanelEdit">		
    			<f:facet name="header">  
    			 <h:outputText value="Edition contact"/>			  
    			</f:facet>			
    			   <rich:graphValidator>
    				<h:panelGrid id="contactInfo"  columns="2">
    					<h:outputText id="numero" value="Numero" />
    					<h:inputText value="#{monControl.selectedContact.num}" />
    					<h:outputText id="date" value="Date naissance" />
    					<rich:calendar value="#{monControl.selectedContact.dateNai}"
    						required="true" enableManualInput="false" locale="fr-Fr"
    						datePattern="dd/MM/yyyy" showApplyButton="true" popup="true">
    					</rich:calendar>
    					<h:outputText id="prenom" value="prenom" />
    					<h:inputText  value="#{monControl.selectedContact.prenom}" />
    				</h:panelGrid>
                 </rich:graphValidator>
                 <br><br>
                 <rich:toolBar>
    		      <rich:toolBarGroup>
    		        <a4j:commandLink
    						onclick="#{rich:component('monPanelEdit')}.hide();return false"> 
    		                 Fermer  
    		         </a4j:commandLink>					   
    			     <a4j:commandLink reRender="contactInfo" action="#{monControl.updateContact}" 
    			               oncomplete="#{rich:component('monPanelEdit')}.hide();return false" > 
    		                    Appliquer  
    		         </a4j:commandLink>
    		    </rich:toolBarGroup>		
    		  </rich:toolBar>	
    		</rich:modalPanel>
    monControler.java:
    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
    ContactDAORemote contact=new ContactDAORemote();
    public void updateContact(){
     
    		try {
    			context = new InitialContext();
    			contact = (ContactDAORemote) context.lookup("ContactDAO/remote");
    		    contact.updateContact(getSelectedContact());
     
    		} catch (NamingException e) {
    			e.printStackTrace();
    		}		
    	}
    	Mon contactDAO:
     
    	public Contact updateCort(final Contact contact) {
    		 em.merge(contact);
    		 return contact;
    	}

  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
    Par défaut
    un exemple est disponible sur dans la demo Richfaces.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    un exemple est disponible sur dans la demo Richfaces.
    Merci Sniper,
    effectivement, j'ai vu cet exemple avant de poster.
    Mais mon probleme c'est au niveau de mon bean

  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
    Par défaut
    et si après la fermeture de la modalPanel tu fais un F5? si tu vois la valeur mise à jour, il faut ajouter reRender de la dataTable dans ton button update; sinon l'action ne s'exécute pas, faut passer en debug et voir ce qui se passe en détail.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    et si après la fermeture de la modalPanel tu fais un F5? si tu vois la valeur mise à jour, il faut ajouter reRender de la dataTable dans ton button update; sinon l'action ne s'exécute pas, faut passer en debug et voir ce qui se passe en détail.
    J'ai faits reRender sur ma table, les changements que je faits ne s'appliquent pas; au contraire je perds les données provenant des autres entities en liaisons.
    Donc, mon bean d'aupdate ne faits pas son boulot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //Mon controler
    ContactDAORemote contact=new ContactDAORemote();
    public void updateContact(){
     
    		try {
    			context = new InitialContext();
    			contact = (ContactDAORemote) context.lookup("ContactDAO/remote");
    		    contact.updateContact(getSelectedContact());
     
    		} catch (NamingException e) {
    			e.printStackTrace();
    		}		
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Mon contactDAO
     
    public Contact updateContact(final Contact contact) {
    		 em.merge(contact);
    		 return contact;
    	}

  6. #6
    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
    Par défaut
    le problème vient de ta méthode update.
    Ce n'est pas clair ce que tu fais,
    mais, tu dois récupérer la ligne sélectionnée modier l'objet et sauvegarder la liste avec l'objet modifié, je ne vois pas ça dans ton code.

  7. #7
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    le problème vient de ta méthode update.
    Ce n'est pas clair ce que tu fais,
    mais, tu dois récupérer la ligne sélectionnée modier l'objet et sauvegarder la liste avec l'objet modifié, je ne vois pas ça dans ton code.
    J'ai changé ma méthode update Contact comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    em.persist(selectedContact);
    Il me rend : Detached entity passed to persist
    j'ai faits comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    em.persist(em.merge(selectedContact));
    Il me rend une erreur de NullPointerException

    ça m'a vraiment cassé les dents
    Qui a une idée SVPPP

  8. #8
    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
    Par défaut
    là c'est un problème de persistance, tu peux faire quelque chose de simple, si tu veux faire l'update de l'objet en base et ensuite réafficher la table, tu peux faire un saveOrUpdate de ton objet, et réinitialiser la liste..

  9. #9
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    là c'est un problème de persistance, tu peux faire quelque chose de simple, si tu veux faire l'update de l'objet en base et ensuite réafficher la table, tu peux faire un saveOrUpdate de ton objet, et réinitialiser la liste..
    Mais la, je travaille pas avec hibernate directement.
    Je travaille avec JPA.
    saveOrUpdate n'existe plus avec JPA. y'a: entityManager.persist (pour persister dans la base) et entityManager.merge (pour modifier).

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Par défaut
    Pourquoi ta méthode update retourne un contact?
    Normalement elle est de type void qui prend comme paramètre un contact
    et puis tu fais le em.merge(Contact c)

  11. #11
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 45
    Par défaut
    Citation Envoyé par soffru Voir le message
    Pourquoi ta méthode update retourne un contact?
    Normalement elle est de type void qui prend comme paramètre un contact
    et puis tu fais le em.merge(Contact c)
    j'ai changé ça, et c meme chose sofiene.
    ça touche pas ma base de données

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/07/2008, 08h55
  2. [C#2.0] Mettre à jour la base de données à partir d'une DataTable
    Par Rodie dans le forum Accès aux données
    Réponses: 6
    Dernier message: 16/05/2007, 14h24
  3. Réponses: 10
    Dernier message: 05/09/2006, 14h02
  4. [C#] mettre à jour ma bdd à partir d'une datatable
    Par rudhf dans le forum Windows Forms
    Réponses: 17
    Dernier message: 27/04/2006, 14h27
  5. Contact Outlook à partir d'Excel
    Par Memes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/12/2005, 11h33

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