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 :

Problème d'édition à partir de datatable


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Problème d'édition à partir de datatable
    Bonjour à tous, je suis confronté à une difficulté en JSF qui me tracasse et je viens solliciter votre aide. En effet je suis entrain de réaliser une application en Java EE avec JSF,GlassFish et primefaces.
    Il s'agit de la création d'utilisateur.Pour ce faire j'ai créé une classe utilisateur
    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
     
    @Entity
    @ManagedBean
    public class Utilisateur implements Serializable{
    	@Id
    	@GeneratedValue( strategy = GenerationType.IDENTITY )
    	private Long pk_iduser;
    	@NotNull(message="Veuillez remplir le nom")
    	@Size(min=3,message="Le nom doit contenir au moins 2 caractères!")
    	private String nom;
    	@NotNull(message="Veuillez remplir le prénom")
    	@Size(min=3,message="Le prénom doit contenir au moins 2 caractères!")
    	private String prenom;
    	@NotNull(message="Veuillez remplir le numéro de téléphone")
    	@Size(min=3,message="Le n° de téléphone doit contenir au moins 5 caractères!")
    	private String telephone;
    	private String statut;
    	@NotNull(message="Veuillez saisir une adresse email valide")
    	@Pattern(regexp="([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)",message="merci de saisir une adresse mail valide")
    	private String email;
    	@NotNull(message="Merci de renseigner le mot de passe")
    	@Size(min=3,message="Le mot de passe doit comporter 5 caractères au minimum")
    	private String motDePasse;
     
    	public Long getPk_iduser() {
    		return pk_iduser;
    	}
    	public void setPk_iduser(Long pk_iduser) {
    		this.pk_iduser = pk_iduser;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    	public String getTelephone() {
    		return telephone;
    	}
    	public void setTelephone(String telephone) {
    		this.telephone = telephone;
    	}
    	public String getStatut() {
    		return statut;
    	}
    	public void setStatut(String statut) {
    		this.statut = statut;
    	}
    	public String getMotDePasse() {
    		return motDePasse;
    	}
    	public void setMotDePasse(String motDePasse) {
    		this.motDePasse = motDePasse;
    	}
    Après cela voic la classe UtilisateurDao
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    @Stateless
    public class UtilisateurDao {
    	private static final String JPQL_SELECT_PAR_EMAIL="SELECT u FROM Utilisateur u WHERE u.email=:email";
    	private static final String JPQL_SELECT_PAR_TELEPHONE="SELECT u FROM Utilisateur u WHERE u.telephone=:telephone";
    	private static final String PARAM_EMAIL="email";
    	private static final String PARAM_TELEPHONE="telephone";
    	@PersistenceContext(unitName="gct_PU")
    	private EntityManager em;
     
    	public void creer(Utilisateur utilisateur) throws DAOException{
    		try{
    			em.persist(utilisateur);
    		}
    		catch(Exception e){
    			throw new DAOException(e);
    		}
    	}
    	public Utilisateur trouverEmail(String email) throws DAOException{
    		  Utilisateur utilisateur=null;
    		  Query requete=em.createQuery(JPQL_SELECT_PAR_EMAIL);
    		  requete.setParameter(PARAM_EMAIL,email);
    		  try{
    			  utilisateur=(Utilisateur)requete.getSingleResult();
    		  }
    		  catch(NoResultException e){
    			  return null;
    		  }
    		  catch(Exception e){
    			  throw new DAOException(e);
    		  }
    		  return utilisateur;
    	  }
    	public Utilisateur trouverTelephone(String telephone) throws DAOException{
    		  Utilisateur utilisateur=null;
    		  Query requete=em.createQuery(JPQL_SELECT_PAR_TELEPHONE);
    		  requete.setParameter(PARAM_TELEPHONE,telephone);
    		  try{
    			  utilisateur=(Utilisateur)requete.getSingleResult();
    		  }
    		  catch(NoResultException e){
    			  return null;
    		  }
    		  catch(Exception e){
    			  throw new DAOException(e);
    		  }
    		  return utilisateur;
    	  }
    	public List<Utilisateur> trouverUser() throws DAOException{
    		  try{
    			  TypedQuery<Utilisateur> query=em.createQuery( "SELECT u FROM Utilisateur u ", Utilisateur.class );
    			  return query.getResultList();
    		  }
    		  catch(NoResultException e){
    			  return null;
    		  }
    		  catch(Exception e){
    			  throw new DAOException(e);
    		  }
    	  }
    	public void supprimer( Utilisateur utilisateur ) throws DAOException {
    		try {
    			em.remove( em.merge( utilisateur) );
    		}
    		catch ( Exception e ) {
    			throw new DAOException( e );
    		}
    	}
    	public void modifier(Utilisateur utilisateur) throws DAOException{
    		try{
    			  em.merge(utilisateur ) ;
    		}
    		catch(Exception e){
    			throw new DAOException(e);
    		}
    	}
    	public Utilisateur trouver( long id ) throws DAOException {
    		try {
    			return em.find( Utilisateur.class, id );
    		} 
    		catch ( Exception e ) {
    			throw new DAOException( e );
    		}
    	}
    }
    Voici mon backing bean qui suit
    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
     
    @ManagedBean
    @RequestScoped
    public class InscrireUtilisateurBean implements Serializable{
    	private static final long serialVersionUID = 1L;
     
     
    	private Utilisateur utilisateur;
    	@EJB 
    	private UtilisateurDao utilisateurDao;
     
    	public InscrireUtilisateurBean(){
    		utilisateur=new Utilisateur();
    	}
     
    	public void setUtilisateur(Utilisateur utilisateur) {
    		this.utilisateur = utilisateur;
    	}
     
    	public Utilisateur getUtilisateur() {
    		return utilisateur;
    	}
        public void inscrire() throws IOException{
        	utilisateurDao.creer(utilisateur);
        	FacesContext.getCurrentInstance().getExternalContext().redirect("user.xhtml");
        }
        public List<Utilisateur> getUsers() {
    		return utilisateurDao.trouverUser();
    	}
        public void supprimer(Utilisateur utilisateurs) throws IOException{
        	utilisateurDao.supprimer(utilisateurs);
        	FacesContext.getCurrentInstance().getExternalContext().redirect("user.xhtml");
        }
        public void modifier(Utilisateur utilisateur) throws IOException{
        	utilisateurDao.modifier(utilisateur);
        	FacesContext.getCurrentInstance().getExternalContext().redirect("user.xhtml");
        }
    }
    Pour l'affichage j'ai créé une page user.xhtml qui est chargée d'afficher l'ensemble des utilisateurs donc j'utilise un datatable comme décrit ci-dessous
    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
     
    			<p:dataTable id="User" var="User" value="#{inscrireUtilisateurBean.users}" resizableColumns="true" scrollable="true" scrollWidth="100%" selectionMode="single" rowKey="#{User.pk_iduser}"
    			styleClass="order-table" headerClass="order-table-header" rowClasses="order-table-odd-row,order-table-even-row">
    				<f:facet name="header">
    			        Liste des utilisateurs
    			        <p:commandButton id="toggler" type="button" value="Colonnes" style="float:right" icon="ui-icon-calculator" />
    			        <p:columnToggler datasource="User" trigger="toggler" />
    			    </f:facet>
    			    <p:column headerText="Nom">
    			        <h:outputText value="#{User.nom}" />
    			    </p:column>
    			    <p:column headerText="Prénom(s)">
    			        <h:outputText value="#{User.prenom}" />
    			    </p:column>
    			    <p:column headerText="Téléphone">
    			        <h:outputText value="#{User.telephone}" />
    			    </p:column>
    			    <p:column headerText="Statut">
    			        <h:outputText value="#{User.statut}" />
    			    </p:column>
    			    <p:column headerText="Email">
    			        <h:outputText value="#{User.email}" />
    			    </p:column>
    		        <p:column headerText="Supprimer" style="width:50px;text-align: center">
    		        	<h:form id="supprimer">
    			             <p:commandButton icon="ui-icon-minus" title="Supprimer" action="#{inscrireUtilisateurBean.supprimer(User)}"/>
    			         </h:form>
    		        </p:column>
    		        <p:column headerText="Editer" style="width:50px;text-align: center">
    		        	<h:form id="editer">
    		        		<p:commandButton icon="ui-icon-pencil" title="Modifier"   update=":ModifierUser" action="#{inscrireUtilisateurBean.setUtilisateur(User)}" oncomplete="PF('dlg2').show()"/>
    		        	</h:form>
    		        </p:column>
    			</p:dataTable>
    Quand on clique sur l'icône d'édition la boite de dialogue s'ouvre et tous les champs sont bien remplis avec les données de la ligne sélectionnée mais mon problème est que quand je clique sur le bouton enregistre les données sont pas mises à jour dans la base de données.
    Voic ma boite de dialogue
    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
     
    <h:form id="formulaireEdition" >
    			<fieldset>
    				<legend>Inscription</legend>
    				<h:outputLabel for="nom">Nom <span class="requis">*</span></h:outputLabel>
    				<h:inputText id="nom" value="#{inscrireUtilisateurBean.utilisateur.nom}" required="true" size="25" maxlength="60">
    					<f:ajax event="blur" render="nomMessage" />
    				</h:inputText>
    				<h:message id="nomMessage" for="nom" errorClass="erreur" />
    				<br/>
    				<h:outputLabel for="prenom">Prénom(s) <span class="requis">*</span></h:outputLabel>
    				<h:inputText id="prenom" value="#{inscrireUtilisateurBean.utilisateur.prenom}" required="true" size="25" maxlength="60">
    					<f:ajax event="blur" render="prenomMessage" />
    				</h:inputText>
    				<h:message id="prenomMessage" for="prenom" errorClass="erreur" />
    				<br/>
    				<h:outputLabel for="telephone">Téléphone(s)<span class="requis">*</span></h:outputLabel>
    				<h:inputText id="telephone" value="#{inscrireUtilisateurBean.utilisateur.telephone}" required="true" size="25" maxlength="60">
    					<f:ajax event="blur" render="telephoneMessage" />
    				</h:inputText>
    				<h:message id="telephoneMessage" for="telephone" errorClass="erreur" />
    				<br/>
    				<h:outputLabel for="email">Email <span class="requis">*</span></h:outputLabel>
    				<h:inputText id="email" value="#{inscrireUtilisateurBean.utilisateur.email}" required="true" size="25" maxlength="60">
    					<f:ajax event="blur" render="emailMessage" />
    				</h:inputText>
    				<h:message id="emailMessage" for="email" errorClass="erreur" />
    				<br/>
    				<h:outputLabel for="motDePasse">Mot de passe <span class="requis">*</span></h:outputLabel>
    				<h:inputSecret id="motDePasse" value="#{inscrireUtilisateurBean.utilisateur.motDePasse}" required="false" size="25" maxlength="60">
    					<f:ajax event="blur" render="motDePasseMessage" />
    				</h:inputSecret>
    				<h:message id="motDePasseMessage" for="motDePasse" errorClass="erreur" />
    				<br/>
    				<p:outputLabel for="statut" value="statut" />
    				<p:selectOneMenu effect="fold" id="statut" value="#{inscrireUtilisateurBean.utilisateur.statut}" style="width:125px">
    	            <f:selectItem itemLabel="administrateur principal" itemValue="administrateur principal" />
    	            <f:selectItem itemLabel="administrateur" itemValue="administrateur" />
    	            <f:selectItem itemLabel="standard" itemValue="standard" />
    	            </p:selectOneMenu>
                    <br/>
    				<p:commandButton icon="ui-icon-check" value="Enregistrer" action="#{inscrireUtilisateurBean.modifier(utilisateur)}" styleClass="sansLabel" /> 
    			</fieldset>
    		</h:form>
        </p:dialog>
        </form>
    Votre aide est la bienvenue je vous remercie!

  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,
    je ne vois pas ou tu definis ton utilisateur que tu mets en parametre dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:commandButton icon="ui-icon-check" value="Enregistrer" action="#{inscrireUtilisateurBean.modifier(utilisateur)}" styleClass="sansLabel" />
    Eric

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Problème d'édition à partir de datatable
    Voic ce que j'ai mis maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p:commandButton icon="ui-icon-check" value="Enregistrer" action="#{inscrireUtilisateurBean.modifier(inscrireUtilisateurBean.utilisateur)}" styleClass="sansLabel" />
    mais au lieu que la mise à jour soit faite, il fait plutôt une insertion. Je vous prie de m'aider car je suis vraiment coincé.MERCI

  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,
    cela veut dire que ton Id n´est pas envoyé. donc ce que tu feras serait de d´envoyer le Id d´utilisateur a ton dialogue.
    Et essaies avant de faire ton enregistrement un test pour savoir quel Id il possede.

    Eric

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Problème d'édition à partir de datatable
    ok je vais appliquer tes conseils et tester voir.merci.

  6. #6
    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
    ok j´attend

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Il marche bien jeffray03. C'est l'id qui posait problème.
    Je te remercie pour tout le temps que tu m'as accordé.

  8. #8
    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
    de rien.
    ce fut un plaisir.
    Eric

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

Discussions similaires

  1. [PopUP][iframe] problème maj popup à partir d'une iframe
    Par fanchic29 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2006, 17h34
  2. Problème ouverture form à partir d'une var
    Par priest69 dans le forum Access
    Réponses: 1
    Dernier message: 29/11/2005, 12h21
  3. Problème lancement excel à partir d'une DLL
    Par irnbru dans le forum MFC
    Réponses: 8
    Dernier message: 03/11/2005, 12h00
  4. [Dev-C++] Problème d'édition des liens
    Par shura dans le forum EDI
    Réponses: 5
    Dernier message: 30/08/2005, 09h35
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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