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 :

Modification de Row Edit dans une DataTable


Sujet :

JSF Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut Modification de Row Edit dans une DataTable
    Salut,

    je développe actuellement un mini site ecommerce je suis bloqué dans la modifcation du rowedit de la categorie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:ajax event="rowEdit" update="listeTable" listener="#{monManagedBean.saveItem}" />
    il prends pas la modification en charge.

    Voilà ma datatable :
    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
     <h:form id="form">  
     
     
     
     
                <p:dataTable id="listeTable" value="#{categorieMBean.categories}" var="item" >
     
    	<p:column>
    		<f:facet name="header">Numero Categorie</f:facet>  
                    <h:outputText value="#{item.numeroCategorie}" />                                   
    	</p:column>   
     
    	<p:column>
    		<f:facet name="header">Numero Categorie</f:facet>               
    		<p:cellEditor>
    			<f:facet name="output">
                                <h:outputText value="#{item.numeroCategorie}" />
    			</f:facet>
    			<f:facet name="input">
    				<p:inputText id="gpsInput"
                                                      value="#{item.numeroCategorie}"  />
    			</f:facet>
    		</p:cellEditor>
    	</p:column>    
     
    	<p:column>
     
                <f:facet name="header">Libelle</f:facet>               
    		<p:cellEditor>
    			<f:facet name="output">
                                <h:outputText value="#{item.libelle}" />
    			</f:facet>
    			<f:facet name="input">
    				<p:inputText id="gpsInputt"
                                                 value="#{item.libelle}"  />
    			</f:facet>
    		</p:cellEditor>
     
    	</p:column>   
     
    	<p:column>
    		<f:facet name="header">Edition</f:facet>
    		<p:rowEditor />
    	</p:column>
     
                    <p:ajax event="rowEdit" update="listeTable" listener="#{categorieMBean.update()}" />
     
    </p:dataTable>
    voila ma méthode de modification qui est dans le managedGean

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
              public String update() 
            {  
            System.out.println("###UPDATE###");  
            categorie = categorieManager.update(categorie);
     
            return "layoutfull_categorie";  
        }
    Peux tu me dire ce que t'as fais sur saveItem dans la méthode ?

    J'attends votre réponse je suis vraiment bloqué. Merci d'avance.

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    salut,

    en fait ta méthode "update" n'a pas la bonne signature, voilà pourquoi elle ne se déclenche pas ;-)

    voici un exemple ici issu d'un de mes projets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void saveSection(RowEditEvent event)
        {
            Section updatedSection = (Section) event.getObject();    
            facade.update(updatedSection);        
        }

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut Problème de modification de Row Edit dans une DataTable
    salut,

    ca ne marche toujours pas je vous envoie le code que jai fait

    voila la méthode en jpa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
             public Categorie update(Categorie categorie) 
        {
             return em.merge(categorie);
        }


    voila ce que j'ai fait suite au code que vous m'avez envoyé



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public void saveCategorie(RowEditEvent event)
        {
     
              Categorie categ = (Categorie) event.getObject();   
              categorieManager.update(categ);
            //categorie =  categorieManager.update(categ);
         }

    ma datatable



    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
      <h:form id="form">  
     
     
     
     
                <p:dataTable id="listeTable" value="#{categorieMBean.categories}" var="item" >
     
    	<p:column>
    		<f:facet name="header">Numero Categorie</f:facet>  
                    <h:outputText value="#{item.numeroCategorie}" />                                   
    	</p:column>   
     
    	<p:column>
    		<f:facet name="header">Numero Categorie</f:facet>               
    		<p:cellEditor>
    			<f:facet name="output">
                                <h:outputText value="#{item.numeroCategorie}" />
    			</f:facet>
    			<f:facet name="input">
    				<p:inputText id="gpsInput"
                                                      value="#{item.numeroCategorie}"  />
    			</f:facet>
    		</p:cellEditor>
    	</p:column>    
     
    	<p:column>
     
                <f:facet name="header">Libelle</f:facet>               
    		<p:cellEditor>
    			<f:facet name="output">
                                <h:outputText value="#{item.libelle}" />
    			</f:facet>
    			<f:facet name="input">
    				<p:inputText id="gpsInputt"
                                                 value="#{item.libelle}"  />
    			</f:facet>
    		</p:cellEditor>
     
    	</p:column>   
     
     
     
     
    	<p:column>
    		<f:facet name="header">Edition</f:facet>
    		<p:rowEditor />
    	</p:column>
     
     
     
                    <p:ajax event="rowEdit" update="listeTable" listener="#{categorieMBean.saveCategorie(event)}" />
     
    </p:dataTable>


    juste pour info il y a une variable RowEditEvent je dois la passer en argument dans ma datatable


    merci d'avance je suis vraiment bloqué sur ca, ca fais 2 jours

  4. #4
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    tu as mis event en argument (j'imagine à cause de l'autocomplétion de ton IDE) mais il ne faut pas.

    il faut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #{categorieMBean.saveCategorie}
    n'as-tu pas tenter ???

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut Problème de modification de Row Edit dans une DataTable
    Salut,

    ca marche toujours pas je travaille avec netbeans

    j'ai cherché un peu sur ne let j'ai trouvé ca mais ca marche toujours pas


    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
     
     
    public void saveCategorie(RowEditEvent event)
        {
     
     
     
     
          JOptionPane.showMessageDialog(null, "je suis la   ");
     
     
            DataTable o =  (DataTable) event.getSource();
     
             Categorie myInfo = (Categorie) o.getRowData();
     
     
             JOptionPane.showMessageDialog(null, "avant modifcation     " +myInfo.getNumeroCategorie());
            JOptionPane.showMessageDialog(null, "avant modifcation     " +myInfo.getLibelle());
     
         categorie=   categorieManager.update(myInfo);
     
     
        return "layoutfull_categorie";  
     
     
        }
    il me donne la ligne sélectionnée mais ne la modifie pas

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    le code source de la datatable:

    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
     
     
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:ui="http://java.sun.com/jsf/facelets"
           xmlns:f="http://java.sun.com/jsf/core"
           xmlns:p="http://primefaces.prime.com.tr/ui" >
        <h:head>
            <title>Ecommerce</title>
        </h:head>
        <h:body>
     
            <h:form id="form">  
     
     
     
                 <p:growl id="messages" showDetail="true"/>
      <p:dataTable id="listeTable" value="#{categorieMBean.categories}" var="item"    rowKey="#{item.numeroCategorie}"  >
     
    	<p:column>
    		<f:facet name="header">Numero Categorie</f:facet>               
    		<p:cellEditor>
    			<f:facet name="output">
                                <h:outputText value="#{item.numeroCategorie}" />
    			</f:facet>
    			<f:facet name="input">
    				<p:inputText id="gpsInput"
                                                      value="#{item.numeroCategorie}"  />
    			</f:facet>
    		</p:cellEditor>
    	</p:column>    
     
    	<p:column>
     
                <f:facet name="header">Libelle</f:facet>               
    		<p:cellEditor>
    			<f:facet name="output">
                                <h:outputText value="#{item.libelle}" />
    			</f:facet>
    			<f:facet name="input">
    				<p:inputText id="gpsInputt"
                                                 value="#{item.libelle}"  />
    			</f:facet>
    		</p:cellEditor>
     
    	</p:column>   
     
     
     
     
    	<p:column>
    		<f:facet name="header">Edition</f:facet>
     
    		<p:rowEditor />
     
     
    	</p:column>   
     
     
     
          <p:ajax event="rowEdit" update="listeTable" listener="#{categorieMBean.saveCategorie}"/>
     
     
    </p:dataTable>
     
            </h:form>  
     
        </h:body>
    </html>
    la méthode qui est dans le managedBean

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        public void saveCategorie(RowEditEvent event)
        {
     
           Categorie categ = (Categorie) event.getObject();   
           //   categorieManager.update(categ);
     
         categorie=      categorieManager.update(categ);
    }
    pourquoi ça se modifie pas ? J'ai tant cherché j'ai pas trouvé.


  7. #7
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    J ai pas mon pc sous les yeux. Mais je crois que c est f:ajax et pas p:ajax

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    jai fait un petit test genre

    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
     
     
     
    public void saveCategorie(RowEditEvent event)
        {
     
     
           Categorie categ = (Categorie) event.getObject();   
     
     
     
             JOptionPane.showMessageDialog(null, "avant modifcation     " +categ.getNumeroCategorie());
            JOptionPane.showMessageDialog(null, "avant modifcation     " +categ.getLibelle());
     
     
     
         categorie=      categorieManager.update(categ);
     
     
     
             JOptionPane.showMessageDialog(null, "aprés modifcation     " +categorie.getNumeroCategorie());
            JOptionPane.showMessageDialog(null, "aprés modifcation     " +categorie.getLibelle());
    }
    j'ai essayé ce que tu mas dis ca marche toujours pas



  9. #9
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Salut,

    voilà, j'ai enfin remis la main sur le code que j'utilise au complet (et qui fonctionne). Dans cet exemple, la position GPS est éditable.

    1 - le datatable avec le rowEditor:

    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
     
            <p:dataTable id="sectionsTable" 
                         value="#{afficheSectionsFormBean.sectionList}" 
                         var="section" 
                         style="width: 100%">
     
                <p:column>
                    <f:facet name="header">Indicatif Long</f:facet>
                    <h:outputText value="#{section.indicatif}" 
                                  converter="#{indicatifConverter}" 
                                  style="color : ##{section.couleur.toUpperCase()}"/>
                </p:column>
     
     
     
                <p:column>
                    <f:facet name="header">Position GPS</f:facet>               
                    <p:cellEditor>
                        <f:facet name="output"><h:outputText value="#{section.dernierePosition}" /></f:facet>
                        <f:facet name="input">
                            <p:inputText  id="gpsInput" 
                                          value="#{section.dernierePosition}" 
                                          converter="#{coordonneesGpsConverter}" />
                        </f:facet>
                    </p:cellEditor>
                </p:column>    
     
                <p:column>
                    <f:facet name="header">Date</f:facet>  
                    <h:outputText value="#{section.dateDernierePosition}" 
                                  style="color : ##{section.couleur.toUpperCase()}">
                        <f:convertDateTime pattern="yyyy/MM/dd kk:mm:ss" />
                    </h:outputText>
                </p:column>   
     
                <p:column>
                    <f:facet name="header">Action</f:facet>
                    <h:commandButton value="Effacer" action="#{afficheSectionsFormBean.remove(section)}" />
                </p:column>
     
                <p:column>
                    <f:facet name="header">Edition</f:facet>
                    <p:rowEditor />
                </p:column>
     
                <p:ajax event="rowEdit" update="sectionsTable" listener="#{afficheSectionsFormBean.saveSection}" />
     
            </p:dataTable>
    et le listener dans le ManagedBean

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     public void saveSection(RowEditEvent event)
        {
            // on met à jour la section (en fait juste sa position GPS) suite
            // à l'édition dans le tableau en mode AJAX.
            Section sc = (SectionCombat) event.getObject();    
            facade.update(sc);
        }
    il ne faut pas que tu oublies de "convertir" tes zones de saisies si elles en ont besoin ainsi que faire un "update" de zones de messages si tu en as pour recevoir les errreurs de conversion / validation.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    je peux voir ce que t'as fais dans ton converter

    ainsi que dans ta méthode de modification update


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       converter="#{coordonneesGpsConverter}" />

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    tas oublié ca



    <p:column>
    <f:facet name="header">Edition</f:facet>
    <p:rowEditor />
    </p:column>

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    ca marche tjrs pas


    voila la datatable


    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
     
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:ui="http://java.sun.com/jsf/facelets"
           xmlns:f="http://java.sun.com/jsf/core"
           xmlns:p="http://primefaces.prime.com.tr/ui" >
        <h:head>
            <title>Ecommerce</title>
        </h:head>
        <h:body>
     
            <h:form id="form">  
     
     
                 <p:growl id="messages" showDetail="true"/>  
     
     
          <p:dataTable  id="sectionsTable" 
                         value="#{categorieMBean.categories}" 
                         var="categorie" 
                         style="width: 100%">
     
     
     
     
     
                        <p:column  sortBy="#{categorie.numeroCategorie}" filterBy="#{categorie.numeroCategorie}" style="width:157px;height:80px;"   >
     
     
                            <f:facet name="header">
                                <h:outputText value="Numero Categorie"/>
                            </f:facet>
     
     
                                <h:outputText style="text-align:center" value="#{categorie.numeroCategorie}"/>
     
                        </p:column>
     
     
     
     
     
     
                <p:column>
                    <f:facet name="header">Nom  categorie</f:facet>               
                    <p:cellEditor>
                        <f:facet name="output"><h:outputText value="#{categorie.libelle}" /></f:facet>
                        <f:facet name="input">
                            <p:inputText  id="gpsInput" 
                                          value="#{categorie.libelle}"  />
                        </f:facet>
                    </p:cellEditor>
                </p:column>    
     
     
     
                  <p:column>
                    <f:facet name="header">Edition</f:facet>
                    <p:rowEditor />
                </p:column>
     
     
              <p:ajax event="rowEdit" update="sectionsTable"  listener="#{categorieMBean.saveSection}"  />
     
     
                    </p:dataTable>
            </h:form>  
     
        </h:body>
    </html>



    voila le managedBean avec les 2 méthode de update ca marche ni avec void
    ni avc objet la valeur nest pas récupéré

    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
     
     
     
     
        public void  saveSection(RowEditEvent event)
        {
     
     
            Categorie sc = (Categorie) event.getObject();
     
     
            categorie.setLibelle(sc.getLibelle());
     
         categorieManager.updatecat(sc);
     
     
           //  categorie = categorieManager.update(sc);
     
        }

  13. #13
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Citation Envoyé par othman22222 Voir le message
    tas oublié ca



    <p:column>
    <f:facet name="header">Edition</f:facet>
    <p:rowEditor />
    </p:column>


    Bah non, je ne l'ai pas oublié, il est bien dans ma page.
    Mon converter de coordonnées GPS, ce n'est pas ça le problème

    mais bon le voici quand même:
    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
     
    package vue.converter;
     
    import javax.ejb.EJB;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ApplicationScoped;
    import javax.faces.bean.ManagedBean;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.Converter;
    import javax.faces.convert.ConverterException;
    import model.entity.CoordonneesGps;
    import model.session.CoordonneesGpsFacade;
    import model.session.GpsExpressionException;
     
    /**
     * Convertisseur JSF pour les coordonnées GPS. Ce convertisseur s'appuie
     * sur une logique métier placé dans un EJB Session.
     * 
     * @author FX
     */
    @ManagedBean
    @ApplicationScoped
    public class CoordonneesGpsConverter implements Converter
    {
        @EJB
        CoordonneesGpsFacade facade;
     
        @Override
        public Object getAsObject(FacesContext context, UIComponent component, String value)
        {
            try
            {
                return facade.fromString(value);           
            }
            catch (GpsExpressionException ex)
            {
                // la conversion est en erreur
                // on génère un message d'erreur de conversion JSF
                FacesMessage fm = new FacesMessage(ex.getMessage());
                fm.setSeverity(FacesMessage.SEVERITY_ERROR);
                throw new ConverterException(fm);
            }
        }
     
        @Override
        public String getAsString(FacesContext context, UIComponent component, Object value)
        {
            return ((CoordonneesGps) value).toString();
        }
    }

    et voici l'EJB sur lequel il s'appuie :

    d'abord l'interface de l'EJB
    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
     
    package model.session;
     
    import model.entity.CoordonneesGps;
     
    /**
     * Facade sur les coordonnées GPS
     * @author FX
     */
    public interface CoordonneesGpsFacade
    {
     
        /**
         * permet d'obtenir une instance de CoordooneesGps
         * @return nouvelle instance de coodonnées GPS. 
         */
        CoordonneesGps getNewInstance();
     
        /**
         * convertit une instance de "CoordonneesGps" sous forme de chaine
         * de caractères.
         *
         * @param gps
         * @return
         */
        String convertToString(CoordonneesGps gps);
     
        /**
         * transforme une chaine de caractère qui représente des coordonnées GPS
         * en une instance de la classe "CoordonneesGps".
         *
         * @param representation
         * @return instance de CoordonneesGps
         */
        CoordonneesGps fromString(String representation) throws GpsExpressionException;
     
    }
    et enfin son code :

    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
     
    package model.session;
     
    import java.util.regex.Pattern;
    import javax.ejb.Stateless;
    import model.entity.CoordonneesGps;
     
    /**
     * Implémentation de la façade sur les coordonées GPS.
     * 
     * @author FX
     */
    @Stateless
    public class CoordonneesGpsFacadeImpl implements CoordonneesGpsFacade
    {
     
        /**
         * expression régulière pour valider une coordonnée GPS.
         * Trouvée sur internet en 2 minutes.
         */
        public final static String GPS_REGEX = "^[+-]?\\d+\\.\\d+, ?[+-]?\\d+\\.\\d+$";
        /**
         * instance de Pattern qui servira pour tester une expression GPS.
         * Cette instance se fonde sur l'expression régulière définie sous forme
         * de constante un peu plus haut.
         */
        private static Pattern gpsRegexPattern = Pattern.compile(GPS_REGEX);
     
        @Override
        public CoordonneesGps getNewInstance()
        {
            return new CoordonneesGps();
        }
     
        @Override
        public String convertToString(CoordonneesGps gps)
        {
            return gps.toString();
        }
     
        @Override
        public CoordonneesGps fromString(String representation) throws GpsExpressionException
        {
            if (!gpsRegexPattern.matcher(representation).matches())
            {
                // la représentation ne matche pas l'expression régulière
                System.out.println("Matcher pas d'accord");
                throw new GpsExpressionException();
            }
            else
            {
                // On décompose la représentation GPS
                String parties[] = representation.split(",");
                Float latitude = Float.parseFloat(parties[0].trim());
                Float longitude = Float.parseFloat(parties[1].trim());
     
                // On vérifie que les valeurs passées sont correctes
                if (latitude <= 90
                    && latitude >= -90
                    && longitude <= 180
                    && longitude >= -180)
                {
                    // tout est correct, on créer alors une instance
                    // de CoordonneesGps pour y mettre les valeurs analysées.
                    CoordonneesGps coordonneesGps = new CoordonneesGps();
                    coordonneesGps.setLatitude(latitude);
                    coordonneesGps.setLongitude(longitude);
                    return coordonneesGps;
                }
                else
                {
                    // ce ne sont pas de bonnes valeurs GPS
                    System.out.println("Coords pas d'accord");
                    throw new GpsExpressionException();
                }
     
            }
        }
    }
    et tant qu'on y est l'exception GpsExpressionException :

    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
     
    package model.session;
     
    /**
     * Cette exception caractérise un défaut de formatage de coordonnées GPS.
     * 
     * @author FX
     */
    public class GpsExpressionException extends Exception
    {
        private static final String ERROR_MESSAGE = "Mauvaise expression GPS";
     
        public GpsExpressionException()
        {
            super(ERROR_MESSAGE);
        }   
    }
    mais ça ne vient pas de là,
    tu dois avoir un problème de conversion / validation.


    tu rentres quand même dans la méthode du listener ?
    Que te renvoie un getClass sur l'objet de l'event ?

  14. #14
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    tu peux montrer ton ManagedBean en entier ?
    as-tu une stacktrace ?

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    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
     
     
     
    public void  saveSection(RowEditEvent event)
        {
     
           try
           {
     
            Categorie sc = (Categorie) event.getObject();
     
             categorieManager.updatecat(sc);
     
    /* 
    jai fais les 2 méthodes de mise a jour mais le blém ne vient pas de la 
    categorie = categorieManager.update(sc);
     
    */
     
       }
     
           catch(Exception e)
           {
     
               JOptionPane.showMessageDialog(null, e.getMessage());
     
           }
     
     
     
        }
     
     
    :cry::cry::cry::cry::cry::cry::cry:


    il entre pas dans le catch il reste dans le try et il modifie pas la valeur

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    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
     
     
     
    public void  saveSection(RowEditEvent event)
        {
     
           try
           {
     
            Categorie sc = (Categorie) event.getObject();
     
             categorieManager.updatecat(sc);
     
    /* 
    jai fais les 2 méthodes de mise a jour mais le blém ne vient pas de la 
    categorie = categorieManager.update(sc);
     
    */
     
       }
     
           catch(Exception e)
           {
     
               JOptionPane.showMessageDialog(null, e.getMessage());
     
           }
     
     
     
        }
     
     
    :cry::cry::cry::cry::cry::cry::cry:


    il entre pas dans le catch il reste dans le try et il modifie pas la valeur

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    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
     
     
    ?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:ui="http://java.sun.com/jsf/facelets"
           xmlns:f="http://java.sun.com/jsf/core"
           xmlns:p="http://primefaces.prime.com.tr/ui" >
        <h:head>
            <title>Ecommerce</title>
        </h:head>
        <h:body>
     
            <h:form id="form">  
     
     
          <p:dataTable  id="sectionsTable" 
                         value="#{categorieMBean.categories}" 
                         var="categorie" 
                         style="width: 100%">
     
     
     
     
     
                        <p:column  sortBy="#{categorie.numeroCategorie}" filterBy="#{categorie.numeroCategorie}" style="width:157px;height:80px;"   >
     
     
                            <f:facet name="header">
                                <h:outputText value="Numero Categorie"/>
                            </f:facet>
     
     
                                <h:outputText style="text-align:center" value="#{categorie.numeroCategorie}"/>
     
                        </p:column>
     
     
     
     
     
     
                <p:column>
                    <f:facet name="header">Nom  categorie</f:facet>               
                    <p:cellEditor>
                        <f:facet name="output"><h:outputText value="#{categorie.libelle}" /></f:facet>
                        <f:facet name="input">
                            <p:inputText  id="gpsInput" 
                                          value="#{categorie.libelle}"  />
                        </f:facet>
                    </p:cellEditor>
                </p:column>    
     
     
     
                  <p:column>
                    <f:facet name="header">Edition</f:facet>
                    <p:rowEditor />
                </p:column>
     
     
     
              <p:ajax event="rowEdit" update="sectionsTable"  listener="#{categorieMBean.saveSection}"  />
     
     
                    </p:dataTable>
            </h:form>  
     
        </h:body>
    </html>

  18. #18
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    dans ton try, sc est null ou c'est bien une instance ?
    sc.getClass().toString() quoi, si sc n'est pas null.

    est-ce que tu es sûr de ta méthode "categorieManager.updatecat()" ...

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 110
    Par défaut
    non c'est bien une instance ca m'affiche entities.categorie

    le problème est dans la méthode de modification ?

    les 2 méthodes de modifiées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
        public Categorie update(Categorie categorie) 
        {
             return em.merge(categorie);
        }
     
     
               public void updatecat(Categorie cat)
        {
                 em.merge(cat);
        }


    dans le managedBean




    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
     
     
     
        private Categorie categorie;
     
    exemple 1 marche pas 
     
     
     
      public void  saveSection(RowEditEvent event)
        {
     
     
            try
          {
     
          Categorie sc = (Categorie) event.getObject();
     
        categorie = categorieManager.update(sc);
     
        }
     
       catch(Exception e)
         {
     
              JOptionPane.showMessageDialog(null, e.getMessage());
     
         }
     
     
     
    //exemple 2 marche pas 
     
     
     
     public void  saveSection(RowEditEvent event)
        {
     
     
            try
          {
     
          Categorie sc = (Categorie) event.getObject();
     
         categorieManager.updatecat(sc);
     
        }
     
       catch(Exception e)
         {
     
              JOptionPane.showMessageDialog(null, e.getMessage());
     
         }
     
     
     
    //exemple 3 marche pas 
     
     
       public void saveCategorie(RowEditEvent event)
        {
     
     
           Categorie categ = (Categorie) event.getObject();  
     
          categ = categorieManager.getCategorieById(categ.getNumeroCategorie());
     
     
     
     
          categorieManager.updatecat(categ);
     
     
        }

  20. #20
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Citation Envoyé par othman22222 Voir le message
    non cest bien une instance ca maffiche entities.categorie

    le blém est dans la méthode de modification ????
    bah oui forcément.

    affiche les valeurs le l'instance en debug ou avec System.out et tu verras si les modifs ont été bien saisies.

    et donc du coup tu verras si ton erreur vient de l'update.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [PrimeFaces] Editer dans une DataTable
    Par shagun dans le forum JSF
    Réponses: 7
    Dernier message: 20/09/2012, 19h43
  2. Réponses: 3
    Dernier message: 19/07/2006, 14h28
  3. [MFC]Champ d'edition dans une Toolbar?
    Par kacedda dans le forum MFC
    Réponses: 3
    Dernier message: 08/07/2005, 11h11
  4. [C#] Modifier une valeur dans une DataTable
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/05/2005, 10h45
  5. Modif d'un ini dans une combo box
    Par Julien.alkaza dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/04/2005, 23h39

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