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 :

h:datatable non mis a jour


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut h:datatable non mis a jour
    Bonjour,

    je rencontre actuellement un petit problème relatif a mon h:datatable (meme resultat avec primefaces ).

    • j'affiche le contenu d'un array list qui est alimenté a partir d'une base de données.
    • j'ajoute des éléments a ma base de données , je réfréchi la page , les nouveaux éléments sont dans ma h:datatable.
    • j’édite un enregistrement dans ma base de données (sans passer par mon application )... je je rafraîchi la page ..et paf rien ? l'ancienne valeur de l'enregistrement est rendu.
    • j'ajout un nouveau élément a ma base de données , je je rafraîchi la page: la list avec le nouveau element est affiché ...mais pas le changement effectué précédemment dans l'enregistrement.


    remarques :

    • les changements que je fait sont directs sur le sgbd sans passer par
      l'interface de mon application.
    • si j'utilise mon application pour l'edition , les mise a jour sont directement reflétés sur mon h:datatable.


    quelqu'un pourrait m'expliquer ce comportement ?

  2. #2
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut
    autres détailles :
    si je modifie un attribut qui fait partie de la clé la mise a jour est reflété sur mon h:datatable.

    sinon pas de mise a jour

  3. #3
    Membre éclairé Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Par défaut
    Pense à mettre le code incriminé ainsi que les erreurs affichés.
    Je pense qu'a ce moment il sera beaucoup plus facile pour les autres de t'aider

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut
    Bonsoir l'ami ,

    y a aucun message d'erreur ... les éditions , mis a jour , ajout , consultation qui sont directement fait a partir de mon application sont reflétés dans ma base de données et correctement affichées en jsf.

    l'anomalie survient quand je modifie manuellement un enregistrement dans la base de données sans passer par mon application web ( ligne de commande mysql ) si la modification ne touche pas l'id d'un record , elle n'est pas reflété dans mes pages jsf apres rafraîchissement.

    aucun message d'erreur ...rien.

    je sais pas si tu m'a compris.

  5. #5
    Membre éclairé Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Par défaut
    C'est surement parcequ'il ya la meme chose sur la liste.
    Quand tu rafraichis il nya pas de requete dans la base de données donc les informations ne sont pas rafraichis.
    Le mieux que tu puisse faire c'est de faire un bouton qui renseigne ta liste avec une requete dans la base de données.

    Maiss le fait que les infos ne soit pas rafraichi est normal.
    Sinon quand tu redemarre l'application il ya les bonnes infos non ?

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 49
    Par défaut
    bonjour l'ami
    Quand tu rafraichis il nya pas de requete dans la base de données donc les informations ne sont pas rafraichis.
    il y a une requête vers la base de données seulement :
    le résultat est visible seulement si un changement a touché l'ID ( clé primaire par exemple) d'un enregistrement.
    si un attribut qui n'est pas une clé est modifié (dans la base de données par ligne de commande par exemple et sans passé par mon application) , ca ne se reflétera pas dans mon h:datatable.

    un peut de code :

    ma facade :

    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
    @Stateless
    public class CityFacade extends AbstractFacade<City> {
        @PersistenceContext(unitName = "TestPU")
        private EntityManager em;
    
        protected EntityManager getEntityManager() {
            return em;
        }
    
        public CityFacade() {
            super(City.class);
        }
    
         public List<City> findallcity(){
         Query query = em.createNamedQuery("City.findAll");
         return query.getResultList();
        }
    
    }
    mon managed 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
    .
    .
    .
    @ManagedBean
    @ViewScoped
    public class CityController {
     
    @EJB
    private CityFacade  cityFacade ;
    private List<City> cityList = new ArrayList<City>();
    private City city = new City();
     
     
        public CityController() {
        }
     
    public void SearchCity(){
     
         cityList =  cityFacade.findallcity();
     
       }
    .
    .
    .
    une partie de la page Jsf :

    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
    <h:form id="Mytable">
     
    <p:dataTable 
    id="citytable" 
    value="#{cityFacade.cityList}"
    var="item" >
     
                 <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Idcity"/>
                                    </f:facet>
                                    <h:outputText value="#{item.idcity}"/>
                 </p:column>
     
                 <p:column>
     
                                    <f:facet name="header">
                                        <h:outputText value="titre"/>
                                    </f:facet>
                                     <h:outputText value="#{item.titre}"/>
     
                 </p:column>
     
    </p:dataTable>
     
    <p:commandButton value="refrech"  action="#{cityFacade.SearchCity}" update="Mytable:citytable" />
     
              </h:form>
    si je click sur le bouton ma table est peuplée.
    si je modifie le titre d'une ville directement dans la base de données : puis je click sur refrech ....rien ne se passe.
    si je modifie l'id d'une ville ( dans ma base de données sans passé par mon application ) puis je click sur le bouton refrech , ma table est mise a jour.


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

Discussions similaires

  1. [DW CS3] Liens non mis à jour dans un modèle
    Par Aspic dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 18/07/2008, 06h52
  2. [TortoiseSVN] Statut fichier non mis à jour
    Par jeffvac dans le forum Subversion
    Réponses: 6
    Dernier message: 16/04/2008, 11h43
  3. [AJAX] Incompatibilité avec IE (données non mis à jour)
    Par WeDgEMasTeR dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/05/2007, 19h46
  4. parametre non mis à jour
    Par rherrad dans le forum Struts 1
    Réponses: 2
    Dernier message: 11/04/2007, 13h35
  5. partie titre onglet non mis a jour
    Par mortalius dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 05/05/2006, 20h02

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