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 :

Refresh automatique d'une variable


Sujet :

JSF Java

  1. #1
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut Refresh automatique d'une variable
    hello,

    J'aimerais savoir si il y a un tag spécial, ou tout autre moyen pour appliquer un refresh automatique d'une seule variable (bindée) de ma page JSF ?

    en gros, un compteur d'utilisateurs en cours de visionnage d'une page, par exemple...et mis à jour toutes les minutes...

    merci d'avance
    un tiens vaut pas mieux que zéro tu l'auras pas

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Il fau tpasser par l'AJAX, et comme jeu de composants supportant l'ajax, je peux te conseiller Richfaces, et plus exactement le composant pull, qui te permet de redessiner un composant particulier (un outputText par exemple) périodiquement.

  3. #3
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    hello,

    merci pour ta réponse.
    Au fur et à mesure de mes recherches, j'ai effectivement compris que l'Ajax était à priori le seule solution de faire ce que je voulais faire proprement... Mais je n'ai pas encore eu le tps d'aller voir plus loin, je ne connais pas du tout l'Ajax, donc je vais regarder ca de plus près et plus précisement suivre tes indications.

    nb : en attendant, j'ai trouvé une solution temporaire très simple à implémenter, un peu moche mais pratique : j'ai placé le code correspondant à la variable que je veux rafraichir dans une page à part. Cette page se rafraichit toute les x minutes (<meta http-equiv="refresh" content="20"/>). Ensuite j'ai fais une frame contenant cette petite page dans ma page principale. Ca marche plutôt bien, mais il m'arrive d'avoir quelques bugs dans ma page principale.. Je vais étudier plus en profondeur cette solution... Mais sinon, qu'en pensez vous ? je n'y connait pas grand chose en html, donc si quelqu'un à une idée aussi pour arranger cette solution ..
    peut être qu'avec du Javascript pour la mise à jour de la page test.jsp, ca serais plus propre ...

    page principale :

    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
     
    <core:view>
                 <html:form>
    		<html:messages showDetail="true" />
    		<div>
    			<iframe src="test.jsp"></iframe> 
    		</div>
    	</html:form>
    	<html:form>
    		<div>
     
    		<html:commandButton value="Create a new page"
    							action="#{Page.createPage}" 
    							rendered="#{not Page.editVisible}" />
    		<html:commandButton value="Add the page"
    							action="#{Page.addPage}" 
    							rendered="#{Page.editVisible}"/>
    		<html:commandButton value="Cancel"
    							action="#{Page.cancelAction}"
    							rendered="#{Page.editVisible}"/>
    ................
    ........

    test.jsp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    .....
    <head><meta http-equiv="refresh" content="20"/></head>
    <core:view>
    	<html:form id="myform">
    		<html:outputText id="nbInstances" value="Nombre d'utilisateur en cours sur cette page : #{CountBean.nbrInstanceOfObject}" />
    	</html:form>
    </core:view>
    .....
    un tiens vaut pas mieux que zéro tu l'auras pas

  4. #4
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    re-bonjour

    j'ai cherché des infos sur RichFaces, et effectivement c'est exactement je que je cherchais

    par contre, j'ai essayé de l'implémenter, j'ai corrigé quelques erreurs, mis à jours certaines lib, j'arrive à lancer ma page jsp, mais... au final ca marche pas, rien ne se passe...

    test.jsp :

    //nb : j'ai essayé de placer deux outputText à des endroits différents, pour voir, mais aucun des deux ne se met à jour...
    //nb : dans les exemples trouvé, la balise <f:view> n'est pas présente, mais chez moi il me la réclame... il me met : #{..} is not allowed in template text


    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
     
     
    <%@ page contentType="text/html"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
     
    <f:view>
     
    	<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    		xmlns:ui="http://java.sun.com/jsf/facelets"
    		lns:a4j="http://richfaces.org/a4j"
    		xmlns:rich="http://richfaces.org/rich">
     
    		<a4j:region>
    			<h:form>
    				<a4j:poll id="poll" interval="500"
    					reRender="nbInstances, nbInstances2" />
    				<h:outputText id="nbInstances"
    					value="#{beanObject.nbrInstanceOfObject}" rendered="true" />
    			</h:form>
    		</a4j:region>
     
    		<h:form>
    			<h:outputText id="nbInstances2"
    				value="#{beanObject.nbrInstanceOfObject}" rendered="true" />
    		</h:form>
     
    	</ui:composition>
    </f:view>
    web.xml

    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
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
    	<servlet>
    		<servlet-name>Faces Servlet</servlet-name>
    		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>Faces Servlet</servlet-name>
    		<url-pattern>/faces/*</url-pattern>
    	</servlet-mapping>
     
    	<welcome-file-list>
    		<welcome-file>faces/test.jsp</welcome-file>
    	</welcome-file-list>
     
    	<context-param>
                              <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
                              <param-value>.xhtml</param-value>
                 </context-param>
     
     
    	<filter>
    		<display-name>RichFaces Filter</display-name>
    		<filter-name>richfaces</filter-name>
    		<filter-class>org.ajax4jsf.Filter</filter-class>
    	</filter>
     
    	<filter-mapping>
    		<filter-name>richfaces</filter-name>
    		<servlet-name>Faces Servlet</servlet-name>
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>INCLUDE</dispatcher>
    	</filter-mapping>
     
    </web-app>
    lib ajoutés :

    richfaces-impl-3.1.4.GA
    richfaces-ui-3.1.4.GA
    richfaces-api-3.1.4.GA


    lib mise à jour :

    commons-collections-3.2.1


    config :

    Eclipse 3.3.1.1
    Tomcat 6.0.14
    JSF RI 1.2
    Hibernate 3

    Aide suivie en partie sur :

    http://livedemo.exadel.com/richfaces...oll.jsf?c=poll
    et autres tuto sur developpez.com (merci )



    En gros, je peux lancer ma page, mais je suis obligé de faire F5 pour que la valeur se mette à jour ... Si quelqu'un voit ou que je fais mal les choses...
    un tiens vaut pas mieux que zéro tu l'auras pas

  5. #5
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    J'ai trouvé mon erreur

    encore une erreur bête !

    j'avais mélangé les appel pour fichier xhtml et jsp...

    donc solution :

    ne pas mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <%@ page contentType="text/html"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
     
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:a4j="http://richfaces.org/a4j"
    	xmlns:rich="http://richfaces.org/rich">
    .............
    ......
    mais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%@ page contentType="text/html"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
    <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
    ..........
    ......
    ca marche vachement mieux comme ca

    et pour le web.xml :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
    	<servlet>
    		<servlet-name>Faces Servlet</servlet-name>
    		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>Faces Servlet</servlet-name>
    		<url-pattern>/faces/*</url-pattern>
    	</servlet-mapping>
     
    	<welcome-file-list>
    		<welcome-file>faces/test.jsp</welcome-file>
    	</welcome-file-list>
     
    	<context-param>
            <param-name>org.richfaces.SKIN</param-name>
            <param-value>blueSky</param-value>
        </context-param>
        <filter> 
            <display-name>RichFaces Filter</display-name> 
            <filter-name>richfaces</filter-name> 
            <filter-class>org.ajax4jsf.Filter</filter-class> 
        </filter> 
        <filter-mapping> 
            <filter-name>richfaces</filter-name> 
            <servlet-name>Faces Servlet</servlet-name>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
            <dispatcher>INCLUDE</dispatcher>
        </filter-mapping>
     
    </web-app>


    Voila voila,

    encore merci pour ta piste initiale djo.mos !
    je ne connaissais l'AJAX que de nom, et pas du tout RichText, hé ben c'est vraiment sympa !

    //nb : pour ceux qui cherchent des tutoriaux :

    http://livedemo.exadel.com/richfaces...f?c=jsFunction

    http://www.jboss.org/file-access/def...tml/index.html

    et bien sur
    http://java.developpez.com/cours/?pa...cat#frameworks
    un tiens vaut pas mieux que zéro tu l'auras pas

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

Discussions similaires

  1. Refresh automatique d'une session AS400
    Par Anavai dans le forum AS/400
    Réponses: 2
    Dernier message: 23/09/2011, 14h50
  2. calcul automatique d'une variable
    Par biologiste dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2008, 12h33
  3. problème macro et filtre automatique par une variable texte
    Par Drozo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/08/2007, 09h05
  4. Remplacement automatique d'une variable
    Par hayaet dans le forum Langage
    Réponses: 2
    Dernier message: 28/06/2007, 17h33
  5. [MySQL] Refresh automatique d'une date
    Par glloq8 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 21/10/2005, 10h16

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