Bonjour,
Je gère des annonces et j’affiche le nombre de fois qu’une annonce est visualisée.
Mon problème est que mon nombre de vues n’est pas rafraichi à l’écran alors qu’il est bien incrémenté en base.
J’utilise GlassFish comme serveur d’applications et même quand j’arrête mon Firefox pour le relancer, ou que je passe de Firefox à IE, je garde le même résultat affiché. Par contre si j’arrête GlassFish et que je le relance j’affiche le bon résultat (celui qui est en base).
Je précise que je passe par un Datamodel pour afficher toutes les annonces, puis je fais une sélection d’une ligne du datamodel pour afficher l’annonce choisie avec son nombre de vues. Je détruis également le Managed Bean correspondant avant chaque affichage des annonces.
Voici la fonction d'appel :
Et la JSF correspondante :
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 /*------------------------------------------------------------------------*/ /* Fonction view (focus sur une annonce particuliere choisie ds la liste) */ /*------------------------------------------------------------------------*/ public String consultationAnnonce() { //---------------------------------------- // On récupere le row de l'annonce cliquée //---------------------------------------- annonceEtendue = (AnnonceEtendue) getItems().getRowData(); //-------------------------------- // Maj de l'annonce (nbre de vues) //-------------------------------- annonce = annonceFacade.find(annonceEtendue.getAnnId()); annonce.setAnnNbvues(annonce.getAnnNbvues() + 1); annonceFacade.edit(annonce); // Retour vers la JSF annonce.xhtml pour affichage de l'annonce logger.debug("GererAnnoncesMB====>Vers JSF gererAnnoncesDetail"); return "gererAnnoncesDetail"; }
Donc je prends les infos dans la ligne cliquée (rowdata du Datamodel) et affiche les données. Au préalable j'ai bien sur effectué la lecture des lignes d'annonces en base pour afficher les rows.
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 <body> <ui:composition template="../templates/templateGP01.xhtml"> <ui:define name="content"> <h:form> <h:panelGrid columns="8"> <h:outputText value="Annonce N°" style="font-weight: bold" /> <h:outputText value="#{gererAnnoncesMB.annonceEtendue.annId}" title="id"/> <h:outputText value="visualisée" style="font-weight: bold" /> <h:outputText value="#{gererAnnoncesMB.annonceEtendue.annNbvues}" title="nbvues" style="font-weight: bold"/> <h:outputText value="fois" style="font-weight: bold" /> </h:panelGrid> <br /> </h:form> </ui:define> </ui:composition> </body> </html>
Je pense malheureusement pas que ce code puisse aider, c'est comme si le Datamodel n'était pas rechargé par les infos mises en base, plus grave, même quand je détruis le MBean ou est déclaré le Datamodel je reste toujours sur des données non mises à jour (alors que je les vois en base ou elles ont bien été flushées...)
Quelqu'un saurait-il m'indiquer comment faire ?
Merci d'avance pour votre aide.
Partager