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 :

[PrimeFaces] Problème d'affichage de date (décalage et recherche)


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Par défaut [PrimeFaces] Problème d'affichage de date (décalage et recherche)
    Salut a tous,
    voila j'ai un petit souci avec l'affichage de date dans mon application et j'aurais besoin d'un coup de main svp:
    1-deja lors de l'affichage des informations de ma base de donnee il y a toujours un decalage au niveau des heures cad que par exemple dans ma base j'ai la date 05-12-2010 15:34:23, lorsque je recupere pour l'affichage les heures reviennent toujours a 23:00:00
    voici comment j'ai ecris le code pour plus d'explication
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <p:column headerText="Date Inscription">
                              <h:outputText value="#{pi.dateInscription}">
                                <f:convertDateTime pattern="MM-dd-yyyy HH:mm:ss" />
                                </h:outputText>
                           </p:column>
    2-ensuite j'aimerais pouvoir effectuer une recherche a partir d'une date que l'utilisateur va donnee et affiche toutes les informations liees a cette date dans la base en cliquant sur un bouton, sauf la non plus ma fonction ne semble pas marcher.
    dans la page search.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
     
    <h:outputLabel value="Date :" 
                                           style="font-weight:bold"/>  
                                    <p:column headerText="date">
                                        <h:inputText value="#{listInscripBean.dateInscription}"/>
                                    </p:column>
                                    <p:commandButton id="btn" value="OK" actionListener="#{
                                                     listInscripBean.affichInfoDateInscription()}"
                                                     update=":form:dataTable"/>  
                                </h:panelGrid>
     
                                <p:dataTable id="dataTable" value="#{listInscripBean.listInfo}" 
                                             var="col" >
     
                                    <p:column headerText="Date Inscription">
                                        <h:outputText value="#{col.dateInscription.toGMTString()}">
                                            <f:convertDateTime pattern="MM-dd-yyyy"/>
                                        </h:outputText>
                                    </p:column>
    dans mon ejb.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @Override
        public List<school> listInfoInscriptDate(Date inscriptDate){
            return pool.createNamedQuery("school.findByDateInscription")
                    .setParameter("dateInscription", inscriptDate)
                    .getResultList();
        }
    et enfin le 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
     
    @EJB
        private searchLocal test;
        Date inscriptDate;
        List<school> listInfo;
     
        public Date getInscriptDate() {
            return inscriptDate;
        }
     
        public void setInscriptDate(Date inscriptDate) {
            this.inscriptDate= inscriptDate;
        }
     
        public List<school> getListInfo() {
            return listInfo;
        }
     
        public void setListInfo(List<school> listInfo) {
            this.listInfo= listInfo;
        }
     
        public List<school> affichInfoDateInscription(){
            listInfo= test.listInfoInscriptDate(inscriptDate);
            return listInfo;
        }
    alors si quelqu'un pouvait m'aider.
    Merci

  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
    1 - tu peux montre la classe associée au ManagedBean "pi"

    2 - Une date n'est pas une journée, mais un moment bien précis dans le temps
    : jour / mois / année évidemment, mais aussi heure, minutes, secondes, millisecondes. Donc pour filtrer avec ce que va saisir l'utilisateur il va falloir que tu "purges" tes dates des information horaire. Tu fais ça avec Calendar.

    3 - sur ton champ dateInscription de ton EJB entity, il faut mettre @Temporal(TemporaType.DATE). Regarde ce lien : http://www.codemiles.com/jpa/tempora...ion-t6207.html

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Par défaut
    Bonsoir fxrobin, merci pour ta reponse, alors voici les reponses:

    1 -enfait mon managedBean est le "listInscripBean" et le pi est la valeur du var de mon datataable pour pouvoir recuperer la valeur de chaque champ de la table de mn BD. Alors je vais mettre la classe associee au managedBean "listInscripBean" en petit a-) et en petit b-) la page dans laquelle j'ai utilise le "pi"

    a-) classe associee au ManagedBean "listInscripBean": searchBean.java
    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
     
    import ejb.searchBeanLocal ;
    import entity.school;
    import java.util.Date;
    import java.util.List;
    import javax.ejb.EJB;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
     
    @ManagedBean(name="listInscripBean")
    @ViewScoped
    public class searchBean {
     
        public searchBean() {
        }
     
        @EJB
        private searchBeanLocal test;
        Date inscriptDate;
        List<school> listInfo;
     
        public Date getInscriptDate() {
            return inscriptDate;
        }
     
        public void setInscriptDate(Date inscriptDate) {
            this.inscriptDate= inscriptDate;
        }
     
        public List<school> getListInfo() {
            return listInfo;
        }
     
        public void setListInfo(List<school> listInfo) {
            this.listInfo= listInfo;
        }
     
        public List<school> affichInfoDateInscription(){
            listInfo= test.listInfoInscriptDate(inscriptDate);
            return listInfo;
        }
     
    //affichage de toutes les info de la base de donnee school
        List<school> student;
     
        public List<school> getStudent() {
            return student;
        }
     
        public void setStudent(List<school> student) {
            this.student= student;
        }
     
    public List<school> affichage(){
     
            student=test.entree(); 
            return student;
    //entree()est la methode se trouvant ds le ejb qui recupere toutes les information de la base
        }
    b-) Page affichageAccueil.xhtml associee au var="pi"
    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
     
    <div xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:p="http://primefaces.org/ui">
     
            <ui:composition template="./TemplatePrincipale.xhtml">
                <ui:define name="center">
                    <f:view>
                    <h:form id="form1">
     
                        <p:dataTable id="dataTable" value="#{listInscripBean.affichage()}" var="pi" widgetVar="infoTable"
                                     paginator="true"  rows="5" rowKey="#{pi.dateInscription}"
                                     paginatorTemplate="{CurrentPageReport}  
                                     {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} 
                                     {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15">
     
                           <p:column headerText="Date Inscription">
                              <h:outputText value="#{pi.dateInscription}">
                                <f:convertDateTime pattern="MM-dd-yyyy HH:mm:ss" />
                                </h:outputText>
                           </p:column>
     
                           <p:column headerText="Nom">
                                <h:outputText value="#{pi.nom}"/>
                           </p:column>
     
                           <p:column headerText="Prenom">
                                <h:outputText value="#{pi.prenom}"/>
                           </p:column>
     
                           <p:column headerText="Adresse">
                                <h:outputText value="#{pi.adresse}"/>
                           </p:column>
     
                           <p:column headerText="Telephone">
                                <h:outputText value="#{pi.telephone}"/>
                           </p:column>
                      </p:dataTable>
                  </h:form>
              </f:view>
            </ui:define>
         </ui:composition> 
    </div>
    2 -concernant "Donc pour filtrer avec ce que va saisir l'utilisateur il va falloir que tu "purges" tes dates des information horaire. Tu fais ça avec Calendar" dois-je faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <f:convertDateTime pattern="MM-dd-yyyy" />
    au lieu de ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <f:convertDateTime pattern="MM-dd-yyyy HH:mm:ss" />
    car si j'utilise un calendar, alors que dans ma base il y a plusieurs donnees enregistrees a la meme date mais sauf les horaires differents.
    voici un exemple d;enregistrement de date de ma base: 15-102010 10:02:58

  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
    Quand ton utilisateur va saisir une date, ton tableau doit afficher toutes les inscriptions de cette journée, si j'ai bien compris.

    Il faut que ta requête en base soit plus large, car avec ce que tu montres, tu fais une recherche ponctuelle : toutes les inscription qui ont eu lieu à une certaines date à 00h00 !

    Donc il faut que ta requête fasse une recherche sur les inscriptions comprises entre 00:00 et 23:59 de la journée saisie : c'est à dire entre 2 Dates.

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Le "problème" du décalage des dates est courant. Il y a une entrée dans la FAQ JSF à ce propos :

    http://javaweb.developpez.com/faq/js...EUR_wrong_date
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/06/2007, 08h44
  2. Problème d'affichage de date dans un Label
    Par L'aigle de Carthage dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2007, 09h00
  3. Problème d'affichage de date dans une base de donnée
    Par Gouyon dans le forum C++Builder
    Réponses: 7
    Dernier message: 11/04/2007, 07h57
  4. Problème d'affichage de date sous access 2003
    Par FuNkY48 dans le forum Access
    Réponses: 7
    Dernier message: 11/12/2006, 14h04
  5. problème d'affichage de date
    Par Commodore dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 07/12/2005, 08h50

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