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

Servlets/JSP Java Discussion :

[formatage d une variable date vers string dans une jsp]


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 60
    Points
    60
    Par défaut [formatage d une variable date vers string dans une jsp]
    Bonjour,

    J'ai une variable Java dans une classe comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Classe orderDetail{
       attribut : Date orderDate;
     
       constructeur, getter setter
    }
    et dans une jsp je dois affiché cette date au format jj/MM/aaaa ma solution actuel tourne autour de :

    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
     
    <c:forEach var="extendedFields" items="${processDetailForm.extendedFields}" end="${processDetailForm.limitCol1-1}" varStatus="vs">
       <c:set var="type">
    	<bean:message key="orderDetail.${extendedFields.name}.inputField" bundle="supervision_supandctrl_config" />
       </c:set>
        <c:choose>
       	<c:when test="${type=='calendar'}">
    	    <c:set var="format">
    		 <bean:message key="processDetail.date.format" bundle="supervision_supandctrl_config" />
    	   </c:set>									
    	   <fmt:formatDate var="${orderDetail.${extendedFields.name}}" pattern="${format}"/>
    	 </c:when>
    	 <c:otherwise>
    	   <nested:write property="orderDetail.${extendedFields.name}"/><br/>
    	 </c:otherwise>
        </c:choose>
    </c:forEach>
    En gros j'itère sur mes champs à afficher si le type du champ est une date (calendar dans le fichier de propriété associé) je formate la date sinon j'affiche la variable tel quel.
    Mon problème est sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <fmt:formatDate var="${orderDetail.${extendedFields.name}}" 
    pattern="${format}"/>
    7:51:17,890 ERROR [jsp]:704 - Servlet.service() for servlet jsp threw exception
    javax.servlet.jsp.el.ELException: Attempt to convert String "orderDetail.orderSubmissionDate" to type "java.util.Date", but there is no PropertyEditor for that type

    Je comprends qu'il veut faire la conversion inverse d'une champ (nom de la variable et non sa valeur) vers un type Date.

    La variable côté java est : orderDetail.orderDate, avec orderDate résultat de la variable ${extendedFields.name}, quelqu'un sait ce que j'ai loupé?

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 16
    Points
    16
    Par défaut
    Bonjour

    je vous propose ces 2 morceaux de code il seront utiles pour vous.
    essay de les combiner avec les votre parsque . je l'est testé moi meme avec mon application.

    List.jsp :

    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
     
    <table border="1">
    			<tr>
     
    				<th>Nom</th>
    				<th>Date de naissance</th>
    				<th>Mari&eacute;</th>
    				<th>Nombre d'enfants</th>
    				<th></th>
    			</tr>
    			<c:forEach var="personne" items="${personnes}">
    				<tr>
     
    					<td><c:out value="${personne.nom}"/></td>
    					<td><dt:format pattern="dd/MM/yyyy">${personne.dateNaissance.time}</dt:format></td>
    					<td><c:out value="${personne.marie}"/></td>
    					<td><c:out value="${personne.nbEnfants}"/></td>
     
    				</tr>
    			</c:forEach>
    		</table>
    edit.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <td>Date de naissance (JJ/MM/AAAA)</td>
    					<td>
    						<input type="text" value="${dateNaissance}" name="dateNaissance">
    					</td>
    					<td>${erreurDateNaissance}</td>
    				</tr>


    la page edit.jsp permet de saisire une dates.
    la page lis.jsp permet d'afficher les informations saisi dans edit.jsp.

    j'ai pas envie d'écrire toutes la page parsque ce n'est pas imporatant.
    vous étes besoins que de la date.

    cordialemen !!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 60
    Points
    60
    Par défaut
    Le problème n'est pas sur le tag fmt:formatDate mais sur l'imbrication de variable. Le tag en quetion prend en argument value une date or je récupère soit une string de la bonne valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <c:set var="varName" value='orderDetail.${extendedFields.name}'/>
    <c:set var="varVal" >
    	<nested:write property="${varName}"/>
    </c:set>	
    <fmt:formatDate value="${varVal}" pattern="${formatDate}"/>
     <br/>
    Soit le nom de la variable et nom la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <c:set var="varName" value='orderDetail.${extendedFields.name}'/>
    <c:set var="varVal" >
    	${varName}
    </c:set>	
    <fmt:formatDate value="${varVal}" pattern="${formatDate}"/>
     <br/>
    Alors que je veux obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <fmt:formatDate value="${orderDetail.updateDate}" pattern="${formatDate}"/>
    où updateDate est le résultat de : ${extendedFields.name}

    Quelqu'un aurait une idée?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Bonjour,

    J'ai jeté un petit coup d'oeil à la spécification JSTL, je n'ai rien trouvé concernant ce type de résolution dynamique.

    Apparemment, la seule résolution dynamique qui peut se faire s'applique sur les objets de type Map.

    Exemple provenant de la spécification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <%-- "productDir" is a Map object containing the description of
    products, “preferences” is a Map object containing the
    preferences of a user --%>
    product:
    <c:out value="${productDir[product.custId]}"/>
    shipping preference:
    <c:out value="${user.preferences['shipping']}"/>
    Je ne sais pas si dans ton cas tu pourrais considérer que orderDetail est une Map...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 60
    Points
    60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <c:set var="formatDate">
    	<bean:message key="processDetail.date.format" bundle="supervision_supandctrl_config" />
    </c:set>
    <c:set var="varName" value='orderDetail.${extendedFields.name}'/>
    <c:set var="varVal" > 
    	<nested:write property="${varName}"/>
    </c:set>
    <fmt:parseDate var="datetmp" value="${varVal}" type="date" dateStyle="default"/>
    <c:out value="${varVal}"/>
    Après je donnerais en argument mon datetmp en argument à mon fmt:formatDate

    mon problème est que je ne connais pas le pattern de ma date :
    erreur relevé :
    java.text.ParseException: Unparseable date: "Sat Nov 24 08:00:05 CET 2007"
    je me doute donc que mon dateStyle n'est pas bon mais j'ai tout essayé : full, long etc.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Essaies de mettre type="BOTH" plutôt que type="date" puisque ta date contient à la fois la partie date et la partie time.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 60
    Points
    60
    Par défaut
    C'est horrible: voici la grosse réponse à mon écriture de date formatée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <c:set var="formatDate">
    	<bean:message key="processDetail.date.format" bundle="supervision_supandctrl_config" />
    </c:set>
    <c:set var="varName" value='orderDetail.${extendedFields.name}'/>
    	<nested:write property="${varName}" format="${formatDate}"/><br/>
    </c:set>
    Débutantn avec la jstl je ne savais pas que l'on pouvait formater directement dans le nested: write la chaine....J'ai du bcp complexifier ma question je pense...

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

Discussions similaires

  1. Récupération de la valeur d une variable elle même contenue dans une variable
    Par guiplongeur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/03/2015, 16h23
  2. Réponses: 2
    Dernier message: 14/05/2014, 10h23
  3. Réponses: 3
    Dernier message: 13/12/2009, 17h04
  4. [MySQL] récupérer dans une boucle chaque information MySQL dans une variable différente
    Par gtenthorey dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/05/2007, 22h34
  5. Réponses: 1
    Dernier message: 17/01/2007, 21h52

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