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

JPA Java Discussion :

Requête avec JPQL select avec condition des dates


Sujet :

JPA Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut Requête avec JPQL select avec condition des dates
    Bonjour,

    je veux faire une requete select avec jpql
    my DAOImpl:

    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
     
    @Transactional
    	public Long sumNb5xx() {
          /*Création d'un objet Query requete calcul somme de classe de réponse 5XX*/
     
    		Query q5xx = em.createQuery("SELECT SUM(h.nb5xx) FROM HttpEntity h WHERE h.host = :host and h.date_http BETWEEN :startDate and :endDate");
    		q5xx.setParameter("host","megaupload.com" );
    		q5xx.setParameter("startDate", "17/03/2014 21:00:00");
    		q5xx.setParameter("endDate", "16/03/2014 21:00:00");
     
     
    		//Exécution et récupération du resultat du requete 
     
    		Long sum5xx = (Long) q5xx.getSingleResult();
    		return sum5xx;
    	}

    l'initialisation des attributes dans ma classe entité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    	@Column(name="HOST")
    	private  String        host;
     
    	@Column(name="DATE_HTTP", insertable=false, updatable=false, columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    	@Temporal(TemporalType.TIMESTAMP)
    	private   Date         date_http;
    j'ai un erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/kpi] threw exception [Error creating bean with name 'httpMB': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Parameter value [17/03/2014 21:00:00] did not match expected type [java.util.Date (n/a)]] with root cause
    java.lang.IllegalArgumentException: Parameter value [17/03/2014 21:00:00] did not match expected type [java.util.Date (n/a)]
    merci d'avance pour ton aide

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ton setParameter attend une date en deuxième argument, pas une chaîne de caractères.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    merci fr1man
    je sais qu'il ne doit pas éter une chaine de caractéres
    comment le faire alos
    je serais reconnaissante si tu peux m'expliquer

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Il te faut construire un objet date à partir de ta chaîne de caractères, en utilisant la classe SimpleDateFormat et sa méthode parse(chaîne).
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    Date d = sdf.parse(taChaine);
    Code à adapter, notamment le pattern de date à vérifier, et gérer les exceptions.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    merci pour tes explications
    et si je veux que ma requete soit dynamique les variables seront saisies par l'end user à travers une page web il choisit avec calendrier la date
    comment j'indique que c'est une date à ma requete
    est ce que je dois faire tt une classe qui traite la date
    et pour ma requete où setParamétre

    pouvez vous m'aider et merci bcp

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben oui, c'est à toi de convertir quelque part la String que tu reçois du client web via request.getParameter() en un java.util.Date.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    Merci tchiz pour ta réponse
    je serais reconnaissante si tu peux m'aider j'ai cherché sur net mais j'ai pas trouver une solution
    ma date est entrée par <p:calendar de primefaces
    puis je veux que cet paramétre passe à la méthode qui va éxécuté ma requete
    puis un rafraichissemen au pie chart
    merci d'avance

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    normalement, si je ne dit pas de bétise, p:calendar stocke déjà un java.util.Date dans ton bean, donc tu n'a rien de particulier à faire.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    merci pour tes explications tchiz,
    je veux passer ces paramétres à ma méthode dans le managedBean
    est ce que je fais des attributs de classe ou je les passe commes des paramétres locales ?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben comme chaque paramètre de ton formulaire, il doit être mappé sur une propriété du managedBean.

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    Merci Tchiz pour ta réponse

    voici ma page xhtml :
    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
     
    <h:form>
    		 <h:outputText value="Date début: " />
            <p:calendar  id="instart" value="#{httpMB.startDate}" pattern="dd/MM/yyyy HH:mm:ss" showOn="button" />
     
            <p:spacer height="5%" width="5%" />
     
            <h:outputText value="Date fin: " />
            <p:calendar id="inend" value="#{httpMB.endDate}" pattern="dd/MM/yyyy HH:mm:ss" showOn="button"  />
     
            <p:spacer height="5%" width="5%" />
     
            <h:outputText value="Host:" />
            <h:inputText id="inhost" value="#{httpMB.host}" ></h:inputText>
     
     
     
            <p:commandButton value="Submit" icon="ui-icon-check" ajax="true" actionListener="#{httpMB.createPieModel}" update="outpie" >
            </p:commandButton>
     
     
             <p:pieChart   id="outpie"  value ="#{httpMB.pieModel}" legendPosition="w"  
                    style="width:400px;height:300px" /> 
     
     
        </h:form>
    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
    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
     
    @Component(value="httpMB")
    @Scope(value="session")
    public class HttpManagedBean implements Serializable {
     
    	/** The Constant serialVersionUID. */
    	private static final long serialVersionUID = 1L;
     
    	@Autowired
    	HttpService httpService;
     
     
     
    	private PieChartModel pieModel = new PieChartModel() ;
    	private String host;
    	private Date   startDate;
    	private Date   endDate;
     
     
    	public void createPieModel(){
    		//this.getStartDate();
     
    		pieModel = new PieChartModel();
    		pieModel.set("Classe de réponse 1XX", getVal1xx());
    		pieModel.set("Classe de réponse 2XX", getVal2xx());
    		pieModel.set("Classe de réponse 3XX", getVal3xx());
    		pieModel.set("Classe de réponse 4XX", getVal4xx());
    		pieModel.set("Classe de réponse 4XX", getVal5xx());
     
    	}
     
    	public PieChartModel getPieModel() {
    		return pieModel;
    	}
     
    	public void setPieModel(PieChartModel pieModel) {
    		this.pieModel = pieModel;
    	}
     
    	public String getHost() {
    		return host;
    	}
     
    	public Date getStartDate() {
    		return startDate;
    	}
     
     
    	public Date getEndDate() {
    		return endDate;
    	}
     
     
    	public  Long getVal1xx(){
    		return httpService.sumNb1xx(host, startDate,endDate);
    	}
     
    	public Long getVal2xx(){	
    		return httpService.sumNb2xx(host,startDate,endDate);
    	}
     
    	public Long getVal3xx(){
    		return httpService.sumNb3xx(host,startDate,endDate);
     
    	}
     
    	public Long getVal4xx(){
    		return httpService.sumNb4xx(host,startDate,endDate);
    	}
     
    	public Long getVal5xx(){
    		return httpService.sumNb5xx(host,startDate,endDate);
    	}
    }
    quand j'exécute j'ai javaNullPointer :
    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
     
    SEVERE: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.xxxx.service.impl.HttpServiceImpl
    java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.xxxx.service.impl.HttpServiceImpl
    	at java.io.ObjectInputStream.readObject0(Unknown Source)
    	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
    	at java.io.ObjectInputStream.readSerialData(Unknown Source)
    	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    	at java.io.ObjectInputStream.readObject0(Unknown Source)
    	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
    	at java.io.ObjectInputStream.readSerialData(Unknown Source)
    	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    	at java.io.ObjectInputStream.readObject0(Unknown Source)
    	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
    	at java.io.ObjectInputStream.readSerialData(Unknown Source)
    	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    	at java.io.ObjectInputStream.readObject0(Unknown Source)
    	at java.io.ObjectInputStream.readObject(Unknown Source)
    	at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595)
    	at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060)
    	at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282)
    	at org.apache.catalina.session.StandardManager.load(StandardManager.java:202)
    	at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:489)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5476)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3988)
    	at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425)
    	at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.io.NotSerializableException: com.xxxx.service.impl.HttpServiceImpl
    	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    	at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    	at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    	at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    	at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    	at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    	at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject(Unknown Source)
    	at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1671)
    	at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1077)
    	at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:430)
    	at org.apache.catalina.session.StandardManager.unload(StandardManager.java:351)
    	at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:516)
    	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5655)
    	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    	at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3981)
    	... 7 more
    pouvez vous m'aidre svp
    Merci d'avance

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    il n'y a pas de nullpointer dans le message que tu donne.

    Ce que dit le message, c'est que tu as déclaré HttpManagedBean comme serializable, mais son champ httpService pointe sur une instance de type com.xxxx.service.impl.HttpServiceImpl qui, elle, n'est pas serializable.

  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    oui j'ai compris ma faute, j'ai supprimé la sérialization de la classe managedBean
    et la page s'affiche et quand je mets les paraméters et je clique sur le commandButton le pie Chart ne s'affiche pas
    et j'ai auncun erreur dans console
    pourvez vous m'aider comment le faire
    merci

  14. #14
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Un scope de session sur un objet non serializable, ça me parait étonnant çà non ?
    J'aurais plutôt ajouter transient a HttpService si il s'agit bien d'un service n'ayant pas vocation à être persister.

    Je n'ai pas de quoi tester mais j'ai un doute sur la possibilité de persister un objet en session qui n'est pas serializable.

    Est ce que justement il n'est pas persisté et que donc ton modèle pour ton graphique est vide au retour ?
    D'où le non affichage
    " Je préfère comprendre les gens qui ne me comprennent pas "

  15. #15
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    je maitrise pas le concept serialization , je serais reconnaissante si tu peux m'expliquer l'interet d'implémenter une classe serilizable
    et si je mette mon managedBean serializable et son cycle comme session
    comment je dois mettre mon service ainsi mon dao
    une autre question svp , comment je dois passer les paramétres d'une requete à partir une page web jusqu'à la méthode qui prend ces paramétres et me renvoi liste d'objet aprés exécution de la requete

    merci beaucoup pour vos explications,

  16. #16
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Que quelqu'un me reprend si je dis n'importe quoi :d

    Une serialization, en gros ça transforme un objet en "autre chose" cela peut être une serialization binaire, XML, etc ...
    Donc tu serialize ton objet vers le format choisit.
    Dans le cas de JSF, je ne sais pas en quoi il le sérialize, probablement en binaire.

    L'enregistrement en session veut dire que ton objet sera persisté pour toute la durée de ton application, jusqu'au redémarrage du server d'appli ou bien si tu as paramétré une durée de persistance de session (timeout de session).

    Comme je l'ai dis au dessus, j'aurais laissé la serialization sur ton bean et passé ton service en transient, ce mot clé signifie que l'objet ne sera pas sérialisé, ce qui dans le cas d'un service qui ne contient aucunes données devant être persisté est très bien. A partir de là, tu n'as pas à te préocupé de changer ton service ou ton DAO.

    Pour ton autre question :
    une autre question svp , comment je dois passer les paramétres d'une requete à partir une page web jusqu'à la méthode qui prend ces paramètres et me renvoi liste d'objet après exécution de la requete

    Est ce que tu peux la re-formuler s'il te plait, j'ai du mal à saisir ?
    Je pense que tu parle de ton événement pour afficher ton graph ?
    Si c'est le cas, ton le cas de JSF, tu n'a rien à faire état donné que tes composant doivent bindé sur ton bean, par conséquent, a l'appel de ton listener, si tes champs sont remplis, il le seront également dans ton bean.


    Après je ne sais pas si JSF a besoin de serializer un objet pour le garder en session, ma piste est peut être mauvaise
    " Je préfère comprendre les gens qui ne me comprennent pas "

  17. #17
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 106
    Points : 38
    Points
    38
    Par défaut
    merci pour ces explications donc je doins mettre mon managedBean à request

    mon but est de promouvoir mon user d'entre les paramétres host, datedebut, datefin,
    puis li clique sur le botton qui va rafraichir pie chart

    ma 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
     
     
       <h:form>
    		 <h:outputText value="Date début: " />
            <p:calendar  id="instart" value="#{httpMB.startDate}" pattern="dd/MM/yyyy HH:mm:ss" showOn="button" />
     
            <p:spacer height="5%" width="5%" />
     
            <h:outputText value="Date fin: " />
            <p:calendar id="inend" value="#{httpMB.endDate}" pattern="dd/MM/yyyy HH:mm:ss" showOn="button"  />
     
            <p:spacer height="5%" width="5%" />
     
            <h:outputText value="Host:" />
            <h:inputText id="inhost" value="#{httpMB.host}" ></h:inputText>
     
     
     
            <p:commandButton value="Valider" icon="ui-icon-check" ajax="true"  update="outpie" >
            </p:commandButton>
     
     
             <p:pieChart   id="outpie"  value ="#{httpMB.pieModel}" legendPosition="w"  
                    style="width:400px;height:300px" /> 
     
     
        </h:form>
    mon 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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
     
    @Component(value="httpMB")
    @Scope(value="request")
    public class HttpManagedBean  implements Serializable {
     
     
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
     
     
    	@Autowired
    	HttpService httpService;
     
     
     
    	private PieChartModel pieModel = new PieChartModel() ;
    	private String host;
    	private Date   startDate;
    	private Date   endDate;
     
    	@PostConstruct
        public void init() {
    		createPieModel();
        }
     
     
    	public void createPieModel(){
     
    		pieModel = new PieChartModel();
    		pieModel.set("Classe de réponse 1XX", getVal1xx());
    		pieModel.set("Classe de réponse 2XX", getVal2xx());
    		pieModel.set("Classe de réponse 3XX", getVal3xx());
    		pieModel.set("Classe de réponse 4XX", getVal4xx());
    		pieModel.set("Classe de réponse 4XX", getVal5xx());
     
     
    	}
     
     
    	public PieChartModel getPieModel() {
    		return pieModel;
    	}
     
    	public void setPieModel(PieChartModel pieModel) {
    		this.pieModel = pieModel;
    	}
     
    	public String getHost() {
    		return host;
    	}
     
    	public Date getStartDate() {
    		return startDate;
    	}
     
     
    	public Date getEndDate() {
    		return endDate;
    	}
     
     
    	public  Long getVal1xx(){
    		return httpService.sumNb1xx(host, startDate,endDate);
    	}
     
    	public Long getVal2xx(){	
    		return httpService.sumNb2xx(host,startDate,endDate);
    	}
     
    	public Long getVal3xx(){
    		return httpService.sumNb3xx(host,startDate,endDate);
     
    	}
     
    	public Long getVal4xx(){
    		return httpService.sumNb4xx(host,startDate,endDate);
    	}
     
    	public Long getVal5xx(){
    		return httpService.sumNb5xx(host,startDate,endDate);
    	}
    }
    tomcat m'affcihe la page je peux entrer les paramétres mais le pie chart ne s'affiche pas
    pouvez vous m'aider où mon probleme je peux pas le résoudre

    Merci d'avance

  18. #18
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Jette un coup d'oeil sur la signification des valeur des scopes.
    Le scope est la persistence de ton objet
    Pour un scope Request, sa durée de vie est à la requête, donc dans ton cas, ce n'est pas le bon scope

    Regarde également les cycle de vie pour JSF, dans ton cas, je pense que tu devrais supprimer le @Scope
    Et mettre @ViewScoped

    Remarque, tu semble marié avec Spring, donc je ne sais pas exactement si celui-ci comprend cette directive, je pense que oui.

    [Edit]
    Une petite recherche :
    http://blog-dev.net/technique/java/s...-spring/001322
    [/EDIT]
    " Je préfère comprendre les gens qui ne me comprennent pas "

  19. #19
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Jabbal'H Voir le message
    Que quelqu'un me reprend si je dis n'importe quoi :d
    C'est parti

    La serialization, c'est un processus, en java (et dans d'autre languages) qui permet de transformer des données en mémoire, des objet, en une représentation binaire, par exemple dans un fichier.

    A quoi ça sert dans le cas précis? Ton objet a un scope "session", ce qui signifie qu'il est stocké dans la session de l'utilisateur. Cette session, c'est un peu un HashMap en mémoire dans le serveur, associé à un cookie chez l'utilisateur. Du coup, quand on trouve le cookie, on retrouve la session et tout va bien.

    Jusque là, aucun lien entre les deux.

    Le problème, c'est que la spec J2EE dit que tout objet en session doit être serializable et que le serveur, "si il le juge nécessaire" est autorisé à serializer la session sur le disque ou toute autre forme de stockage afin de décharger la mémoire. Ou pour d'autre raison. En pratique, sous tomcat, et par expérience, ça n'a lieu que dans un seul cas. Quand on arrête le serveur tomcat. Il faut bien stocker les sessions quelque part afin de les retrouver au prochain démarrage, histoire de ne pas éjecter tous les utilisateurs.

    Personellement, je ne marque jamais mes objet session serializable, c'est souvent compliqué et ça n'apporte pas grand chose pour une application type intranet. La conséquence, c'est qu'en cas de mise à jour ou d'arrêt du serveur, je déconnecte tous les utilisateur. Rien de bien grave ici.

  20. #20
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    J'étais pas si loin que çà :d

    Du coup dans son cas, le scope session ne me parait pas pertinent ?

    Le mieux pour son problème serait déjà vérifier si dans le listener le bean est bien remplis déjà.
    " Je préfère comprendre les gens qui ne me comprennent pas "

Discussions similaires

  1. select avec autre select en condition
    Par ifsera dans le forum Langage SQL
    Réponses: 7
    Dernier message: 12/11/2012, 22h23
  2. Comment écrire un SELECT avec 2 ou 3 conditions apres le WHERE ?
    Par pro.dotnet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/02/2009, 22h01
  3. [WD9] Requête de type SELECT avec une formule mathémathique
    Par jo_la_pasteque dans le forum WinDev
    Réponses: 2
    Dernier message: 22/04/2008, 12h42
  4. Graphique avec plage de données contenant des dates / heures
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2007, 21h13
  5. Réponses: 1
    Dernier message: 25/05/2007, 22h31

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