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

Struts 1 Java Discussion :

Problème de date


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut Problème de date
    Bonjour,

    je fais suite à la discussion de ce post :

    http://www.developpez.net/forums/sho...=163667&page=2

    Après avoir fait tt les modifications conseillé je tombe sur une erreur de format dans les log :

    javax.servlet.jsp.JspException: ServletException in 'addAlbum.jsp': /addAlbum.jsp(27,9) L'attribut format est incorrect pour le tag date d'après la TLD indiquée


    J'ai pourtant indiqué le format souhaité dans ma JSP :

    <td><darkwark:date property="dateAlbum" format="dd-MM-yyyy" /></td>
    le format souhaité dans ma classe DateTag pour afficher correctement mes infos :

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import javax.servlet.jsp.JspException;

    import org.apache.struts.taglib.html.TextTag;

    public class DateTag extends TextTag {
    private String format = "dd-MM-yyyy";
    private DateFormat formater = new SimpleDateFormat(format);


    protected String formatValue(Object object) throws JspException {
    if( object != null && object instanceof Date ) {
    return formater.format((Date)object);
    } else {
    return super.formatValue(object);
    }
    }

    public String getFormat() {
    return format;
    }

    public void setFormat(String format) {
    this.format = format;
    formater = new SimpleDateFormat(format);
    }
    }
    Et dans mon converter le format que je souhaite avoir pour insérer ma date dans ma BDD :

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import org.apache.commons.beanutils.Converter;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;


    public class DateConverter implements Converter {

    private static final Log logger = LogFactory.getLog(DateConverter.class);

    private Object defaultValue = null;

    public DateConverter() {
    this.defaultValue = null;
    }

    public DateConverter(Object defaultValue) {
    this.defaultValue = defaultValue;
    }

    public Object convert(Class type, Object value) {

    Date laDate = new Date();

    if (value == null) {
    return (defaultValue);
    }

    if (value instanceof Date) {
    return (value);
    }

    try {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    laDate = sdf.parse(value.toString());
    return laDate;

    } catch (ParseException e) {
    logger.debug("Unable to convert " + value + " into Date format.");
    return defaultValue;
    }
    }
    }
    Pourrais je avoir des informations supplémentaires ?

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Par défaut
    Sans avoir regardé en détail, c'est normal que dans ton converter tu aies :
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    alors que dans le reste de ton code tu as :
    dd-MM-yyyy
    comme format de date ?

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Attention tu confond le format de ma classe DateTag qui me sert à manipuler les dates dans mon IHM et le format de mon converter qui va etre utiliser pour insérer la date au format de ma BDD. Si je n'ai pas cimpris qq chose, pourrais je avoir une explication ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    le converter et le tag doivent utiliser le même format !
    l'un pour passer de Date à String et l'autre de String à Date

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Je ne comprend pas ta reponse ... Comment le converter peut avoir un format pour passer de Date à String et un autre format de String à Date et etre le meme que dans ma jsp ( qui n'a qu'un seul format )


  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Bon j'ai mis tt au meme format mais g tjs un problème :

    Voici mon dateConverter.java :


    public class DateConverter implements Converter {

    private static final Log logger = LogFactory.getLog(DateConverter.class);

    private Object defaultValue = null;

    public DateConverter() {
    this.defaultValue = null;
    }

    public DateConverter(Object defaultValue) {
    this.defaultValue = defaultValue;
    }

    public Object convert(Class type, Object value) {

    Date laDate = new Date();

    if (value == null) {
    return (defaultValue);
    }

    if (value instanceof Date) {
    return (value);
    }

    try {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    laDate = sdf.parse(value.toString());
    return laDate;

    } catch (ParseException e) {
    logger.debug("Unable to convert " + value + " into Date format.");
    return defaultValue;
    }
    }
    }
    Mon DateTag.java :

    public class DateTag extends TextTag {
    private String format = "yyyy-MM-dd";
    private DateFormat formater = new SimpleDateFormat(format);


    protected String formatValue(Object object) throws JspException {
    if( object != null && object instanceof Date ) {
    return formater.format((Date)object);
    } else {
    return super.formatValue(object);
    }
    }

    public String getFormat() {
    return format;
    }

    public void setFormat(String format) {
    this.format = format;
    formater = new SimpleDateFormat(format);
    }
    }
    Et dans mes jsp j'ai :

    <td><darkwark:date property="dateAlbum" format="yyyy-MM-dd" /></td>
    Ce format est le même que celui de ma base de données (format americain).

    Le soucis est dans le post qui suit

    DarkWark

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Bon voila le soucis quand je garde le format americain de ma BDD, dans mon converter et dans mes jsp :

    j'ai 2 formulaires pour editer mes albums : un addAlbum (bean + jsp) et un editAlbum (bean + jsp)

    l'action qui me ramène l'enregistrement à modifier dans mon editAlbum.jsp se passe bizarement. J'ai remarké qu'en plus de remplir le champ du formulaire j'obtiens la date à gauche de mon champs et g un pikeUpDate a droite... Il doivent venir de ta solution mais je souhaiterai avoir une explikation

    Par contre dans ma jsp addAlbum.jsp, j'ai une erreur dans les logs me disant :

    javax.servlet.jsp.JspException: ServletException in 'addAlbum.jsp': null

    je me doute que c parceke le champ est vide que g ce msg, mais vu que je souhaite avoir un formulaire vierge en mode insertion, je ne c pas comment contourner ce problème.


    DarkWark

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Est ce que qq'un pourrait me donner une solution qui marche pour resoudre les problèmes de formatage de date des champs texte d'un actionform d'une application Struts ?

    Ou alors est ce que alwin meut m'expliker les comportement que je decris ?

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Personne ne peut m'aider ? Je regarde aussi si le framework Struts-Layout peut m'apporter. Peut etre que l'utilisation de cette sur-couche pourrait resoudre mon probleme ? Qu'en pensé vous ?

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Bonjour a tous, et à toi c_nvy !

    Mon problème de date est persistant chez moi ! un exemple concret me serais fort utile ! si je met :

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String dateAlbum = "";

    et

    dateAlbum = alForm.getDateAlbum();
    sdf.parse(dateAlbum);
    System.err.println("Dernier idAlbum : "+sdf.parse(dateAlbum));

    en ayant tapé 01/01/2004, je me retrouve avec une date de ce type dans mes logs :

    Thu Jan 01 00:00:00 CET 2004

    Y a t'il une explication ?

  11. #11
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Bonjour a tous, et à toi c_nvy !

    Mon problème de date est persistant chez moi ! un exemple concret me serais fort utile ! si je met :

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String dateAlbum = "";

    et

    dateAlbum = alForm.getDateAlbum();
    sdf.parse(dateAlbum);
    System.err.println("Dernier idAlbum : "+sdf.parse(dateAlbum));

    en ayant tapé 01/01/2004, je me retrouve avec une date de ce type dans mes logs :

    Thu Jan 01 00:00:00 CET 2004

    Pourquoi ma date ressort avec ce format ? ne devrais t'elle pas ressortir avec le format dd/MM/yyyy ? Y a t'il une explication ?

  12. #12
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Salut DarkWark

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String dateAlbum = "";
    dateAlbum = alForm.getDateAlbum();
    sdf.parse(dateAlbum);
    System.err.println("Dernier idAlbum : "+sdf.parse(dateAlbum));
    Avec le code ci-dessus, tu demandes à Java de transformer une date de type String, saisie sous le format dd/MM/yyyy, en date Java.
    Il est donc normal que tu obtiennes ceci dans la log :
    Thu Jan 01 00:00:00 CET 2004

  13. #13
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    ok c_nvy,

    Mais le resultat Thu Jan 01 00:00:00 CET 2004 ne correspond pas au format dd/MM/yyyy que je demande ! Du coup pour l'insertion en BDD ... maKache

  14. #14
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    C pas comme ça kon convertit un string en date ?

  15. #15
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Je vais reformuler ma question :

    Comment peut on obtenir une date au format dd/MM/yyyy ?

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String dateAlbum = "";
    dateAlbum = alForm.getDateAlbum();
    Typiquement, peux-tu donner un exemple de ce que contient dateAlbum ?

    Nicolas

  17. #17
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    une date du style : 01/01/2004

  18. #18
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    c_nvy comment tu fais toi pour convertir un string en date ?

  19. #19
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    J'avoue être perdu.
    Tu pars d'une date String de type "01/01/2004"
    Et tu veux la convertir en quoi ? une Date ? ou une String de format différent ?

    Nicolas

  20. #20
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Je reexplique :

    Je saisie dans le champ text de mon formulaire une date (ex:01/01/2004) qui est declarée en String dans mon bean.

    dateAlbum = alForm.getDateAlbum(); <-- recupère donc un String

    Je souhaite tt simplement convertir le string saisie (01/01/2004) en date pour que je puisse insérer cette info dans le champs de ma BDD qui est de type date avec pour format (dd/MM/yyyy).

    En faisant :

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String dateAlbum = "";
    dateAlbum = alForm.getDateAlbum();
    sdf.parse(dateAlbum);
    System.err.println("Dernier idAlbum : "+sdf.parse(dateAlbum));

    je recupère une date au format suivant:Thu Jan 01 00:00:00 CET 2004, se qui n'ai pas le bon format de date pour que je puisse l'insérer dans ma BDD.

    Si je n'ai pas compris qq chose, dite le moi !!!!!!!!!

Discussions similaires

  1. [XL-2007] Probl formule avec des intervales de dates
    Par alexandrek dans le forum Excel
    Réponses: 0
    Dernier message: 09/02/2011, 11h56
  2. probl champ date
    Par bambino13 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/07/2009, 14h28
  3. Probl insertion date dans db mysql(odbc)
    Par MetalGearBe dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/03/2007, 16h54
  4. proble de recuperation de date
    Par mikaloop dans le forum Access
    Réponses: 8
    Dernier message: 24/02/2006, 23h01
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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