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 :

Passage de date en paramètre avec JSF


Sujet :

JSF Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut Passage de date en paramètre avec JSF
    bonjour tout le monde, j'ai un souci pour passer des parametres date .J'utlise les codes suivant:
    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
    public List <Object[]>getMontantParVehicule(Date d1,Date d2) {
     
    		Session session=HibernateUtil.getSessionFactory().openSession();
    		try{
    		session.beginTransaction();
    		System.out.println("Stat HQL");
    		SQLQuery q=session.createSQLQuery("select IMMAT,SUM(PRIX) as COUT,SUM(QUANTITE) as QUANTITE,COUNT(IMMAT) as nbre from BON_ESSENCE where DATE_BON between :debut and :fin  GROUP BY IMMAT ");
          //  Query q =session.createQuery("select immat,sum(prix) as mnt from BonEssence group by immat  ");
            q.setParameter("debut",d1  );
            q.setParameter("fin",d2  );
    return q.list();
    		}catch (RuntimeException e) {
    		    session.getTransaction().rollback();
    		    throw e;
    		}finally{
     
    			session.getTransaction().commit();
    		}
     
     
        }
    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
    private Date d1;
        private Date d2;
    	public Date getD1() {
    		return d1;
    	}
    	public void setD1(Date d1) {
    		this.d1 = d1;
    	}
    	public Date getD2() {
    		return d2;
    	}
    	public void setD2(Date d2) {
    		this.d2 = d2;
    	}
    public List<Object[]> getMontantParVehiculeTotal(){
    		return essenceService.getMontantParVehicule(d1, d2);
    		}
    l'objectif est de saisir les paramètres dans une page et d'affichez le deuxième page qui prend en compte les paramètres saisis.
    me pages xhtml sont:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets"
           xmlns:p="http://primefaces.org/ui">
     
            <h:head>
                <f:facet name="first">
                    <meta http-equiv="X-UA-Compatible" content="EmulateIE8" />
                    <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
                    <title>Welcome</title>
                </f:facet>
     
                <link type="text/css" rel="stylesheet" href="#{request.contextPath}/css/default.css" />
                <link type="text/css" rel="stylesheet" href="#{request.contextPath}/css/syntaxhighlighter/syntaxhighlighter.css" />
     
                <style type="text/css">
                    .ui-layout-north {
                        z-index:10 !important;
                        overflow:visible !important;;
                    }
     
                    .ui-layout-north .ui-layout-unit-content {
                        overflow:visible !important;
                    }
                </style>
            </h:head>
     
    	<h:panelGrid columns="2" id="grid2">
     
                        <h:outputLabel value=" debut: *" for="txt_d1" />
                         <p:calendar locale="fr" value="#{bonEssenceBean.d1}" id="txt_d1" datePattern="dd/yyyy/MM" required="true" ></p:calendar>
     
                        <h:outputLabel value=" Fin: *" for="txt_d2" />
                         <p:calendar locale="fr" value="#{bonEssenceBean.d2}" id="txt_d2" datePattern="dd/yyyy/MM" required="true" ></p:calendar>
     
     
                     <p:button id="btn_add" value="Enregistrer"
                        outcome="DetailBon" >
                        <f:param name="d1" value="#{bonEssenceBean.d1}"></f:param>
                        <f:param name="d2" value="#{bonEssenceBean.d2}"></f:param>
                        </p:button>
     
                </h:panelGrid>
    </html>
    et DetailBon.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
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:p="http://primefaces.org/ui">
     
    	<ui:composition template="/Views/Template/common.xhtml">
    	  <ui:define name="Edition">
    	  <h:form id="form">
     
        </h:form>
     
    	  </ui:define>
     
    	  <ui:define name="Consultation">
    	  <h:form id="form2">
    	  <!-- //////////////////////////////////////////////////////////////////////////// -->
     
    	  <p:dataTable id="statTable" var="item" value="#{bonEssenceBean.montantParVehiculeTotal}"  widgetVar="statTable" sortMode="single" rows="5" paginator="true" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,15,25">    
          <f:facet name="header">
                  <p:outputPanel>  
                       <h:outputText value="Search:" style="Height:30px"/>  
                       <p:inputText id="globalFilter" onkeyup="carsTable.filter()" style="width:150px" />  
                  </p:outputPanel>  
     
               </f:facet>
                <p:column  headerText="Vehicule"   > 
     
                    <h:outputText value="#{item[0]}" />
     
                </p:column>  
     
                <p:column  headerText="COUT">  
                    <h:outputText value="#{item[1]}" />  
                </p:column>  
                <p:column  headerText="QUANTITE">  
                    <h:outputText value="#{item[2]}" />  
                </p:column> 
                 <p:column  headerText="Nombre de bon">  
                    <h:outputText value="#{item[3]}" />  
     
                </p:column>
     
     
     
            </p:dataTable>
     
     
     
    	</h:form>
    	  </ui:define>
    	</ui:composition>
    </html>
    mais d1 et d2 ne sont pas instanciés et restent null alors j'ai l'exception:transaction sot succefully started
    La technique utilisée ou du moins celle que j'essaie est dans le manuel Primeface mais peut etre que je rate un truc

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    quelqu'un connait-il une alternative pour passer des date en paramètre au bean?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Par défaut
    Je ne pense pas que ce soie possible, cependant il suffit des parser la chaine au format dd/yyyy/MM que vous recevez.

    Voir SimpleDateFormat

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Citation Envoyé par ellix86 Voir le message
    Je ne pense pas que ce soie possible, cependant il suffit des parser la chaine au format dd/yyyy/MM que vous recevez.

    Voir SimpleDateFormat
    Parser, est qu'il faut alors que je change les types de Date à String?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Par défaut
    C'est l'inverse, le formulaire envoie une date au format String (dd/yyyy/MM ou 13/2013/08 pour la date d'aujourd'hui) et il faut la mettre en Date.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Citation Envoyé par ellix86 Voir le message
    C'est l'inverse, le formulaire envoie une date au format String (dd/yyyy/MM ou 13/2013/08 pour la date d'aujourd'hui) et il faut la mettre en Date.
    merci mais je crois qu'il y a un probleme avant meme le de Parser. j'ai effectué un test et je constate que les données en parametre de la page 1 ne sont pas reçues,dans le bean puisque je ne peut les afficher dans la page 2.
    d'abord faut que je puisse passer des parametre aux bean.

  7. #7
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut
    Quand tu utilises f:param il faut utiliser

    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FacesContext facesContext = FacesContext.getCurrentInstance();
            HttpServletRequest httpServletRequest = (HttpServletRequest) facesContext.getExternalContext().getRequest();
    String d3=    httpServletRequest.getParameter("d1");
    ici d1 est le nom du paramètre <f:param name="d1" value="#{bonEssenceBean.d1}"></f:param>

    Ce cas est juste pris comme cela mais bon tu convertiras le String en Date

    Mais je te conseillerais aussi de regarder le scope de ton controller car tu parles de passer d'une page à une autre.moi j'utiliserai simplement un @SessionScoped

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Citation Envoyé par bruneltouopi Voir le message
    Quand tu utilises f:param il faut utiliser

    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FacesContext facesContext = FacesContext.getCurrentInstance();
            HttpServletRequest httpServletRequest = (HttpServletRequest) facesContext.getExternalContext().getRequest();
    String d3=    httpServletRequest.getParameter("d1");
    ici d1 est le nom du paramètre <f:param name="d1" value="#{bonEssenceBean.d1}"></f:param>
    bonjour, ce bout de code concerne t-il catte partie là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public List<Object[]> getMontantParVehiculeTotal(){
    		return essenceService.getMontantParVehicule(d1, d2);
    		}

  9. #9
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut
    pour faire du JEE il faut normalement que tu aies les bases du java.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public List<Object[]> getMontantParVehiculeTotal(){
    FacesContext facesContext = FacesContext.getCurrentInstance();
            HttpServletRequest httpServletRequest = (HttpServletRequest) facesContext.getExternalContext().getRequest();
    String d3=    httpServletRequest.getParameter("d1");
    String d4=    httpServletRequest.getParameter("d3");
     
    //apres conversion des string en Date d5 et d6
    		return essenceService.getMontantParVehicule(d5, d6);
    		}
    exemple de code de conversion des string en date

    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
    /**
             * Convertis une Chaine en Date
             * @param <String> chaine a converir (ex : "12/11/2011")
             * @param <String> format de la chaine a converir (ex :pour  "12/11/2011" le format est "dd/MM/yyy")
             * @return <Date> date
             */
    	public Date parseString(String string,String format) {
    		SimpleDateFormat typeFormat = new SimpleDateFormat( format );
    		Date maDateFinale = new Date();
    		try {
    			typeFormat.setLenient(false);
    			maDateFinale = typeFormat.parse(string);
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
     
    		return maDateFinale ;
    	}

Discussions similaires

  1. [Calendrier] Dynamique avec passage de date en paramètre
    Par hannibal974 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 22/05/2014, 02h26
  2. Requête avec date en paramètre
    Par peach dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 25/01/2007, 14h35
  3. Réponses: 2
    Dernier message: 16/08/2005, 15h33
  4. Réponses: 6
    Dernier message: 26/07/2005, 10h20
  5. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37

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