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 :

Utilisation de format date dans formulaire ss JSP et base mysql


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut Utilisation de format date dans formulaire ss JSP et base mysql
    Bonjour tout le monde,

    J'ai donc dans une base de données mysql une table ayant 3 champs au format date (2 en date et 1 en time_stamp).
    J'ai ensuite un formulaire dans une JSP où je rentre une promotion avec les champs pré-nommés. Déja d'une, est il possible d'afficher directement la date du jour dans le champ qui est en time_stamp pour que l'utilisateur ne modifie rien ? Ensuite est il possible de faire un champ avec directement le format de date pré-écrit comme |--/--/----| ?

    Et la question qui m'embete le plus, comment convertir les String que recoit ma servlet en format date pour envoyer dans ma base de données ?

    Pour le moment j'ai ca dans ma servlet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Promo p;
    				p = new Promo();
    				//p.setIdPromo(Promos.listePromo().size()+1);
    				p.setTitrePromo(request.getParameter("titrecreation"));
    				p.setDescPromo(request.getParameter("descreation"));
    				p.setDatecreation(request.getParameter("datedecreation"));
    				p.setDatedebut(request.getParameter("datedebutcreation"));
    				p.setDatefin(request.getParameter("datefincreation"));

  2. #2
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Je te conseille de lire la FAQ des dates Java: http://java.developpez.com/faq/java/...G_parse_string

    Tu dois créer un objet Date à partir de ton String passé en paramètre avec un SimpleDateFormat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    p.setDatecreation(sdf.parse(request.getParameter("datedecreation")));

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    J'ai rajouté cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static Date stringToDate(String sDate, String sFormat) throws Exception {
            SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
            return sdf.parse(sDate);
    }
    mais déja il me met un message d'erreur comme quoi il ne peut pas convertir un type Date en Date. J'imagine que c'est dû aux 2 formats date qui sont java.utile.date et java.sql.date . Dans mon cas je pense que c'est java.sql.date qu'il faut utiliser. Du coup je vois pas comment faire pour que ca marche

  4. #4
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Quel est le type des dates dans ta classe Promo?

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    En farfouillant sur Internet j'ai trouvé cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private java.sql.Date toSqlDate(final String date) throws java.text.ParseException {
    SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy");
    formater.setLenient(false);
    java.util.Date parsedDate = formater.parse(date);
    return new java.sql.Date(parsedDate.getTime());
    }
    Mais ca marche pas plus j'ai essayé de l'adapter a mon programme en faisant ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String datecreate = request.getParameter("datedecreation");
    Date datenvoi = toSqlDate(datecreate);
    p.setDatecreation(datenvoi);
    je créé une string qui recupere ce que j'envoie depuis ma JSP
    je créé ensuite une variable de type Date qui converti grace a la méthode pré-cité la variable string en Date
    que j'utilise pour crée ma promo.

    En mode debug je m'apercois que ma promo se construit bien et prend en compte les dates que je rentre mais dans l'aborescence de ces variables j'ai :
    cdate : null
    fastTime : 1230764400000

    Je ne sais pas si c'est normal

    Si quelqu'un a une solution mieux adapté ou pourrais me débloqué je l'en remercie d'avance

  6. #6
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Pour moi c'est bon, tu convertis juste la Date java en sql Date. Ca doit marcher!

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Pourtant ca ne marche pas. Je saisis 01/01/2009 comme exemple. Ce qui me semble bizarre c'est ce que le programme essaie de rentrer en mode debug :
    cdate : null
    fastTime : 1230764400000
    Je m'attendais a voir la date dans le format que j'avais rentré ou alors en format anglais ou autre mais des chiffres comme ca je trouve ca etrange

  8. #8
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    La classe doit stocker un timestamp, ça me choque pas. Mais affiche le toString() de ta date et tu devrais voir ta date au format 2009-01-01

    C'est pas le cas?

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Dans un soucis pratique j'ai decidé d'enlevé le timestamp. Du coup j'arrive a rentrer mes trois dates mais pas a les afficher il me met une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NoSuchMethodError
    sur ma methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Date getDatecreation() {
    	return datecreation;
    }
    J'imagine qu'il arrive pas a afficher cette variable sous son format. Faut il que je lui envois un String ou autre ?

  10. #10
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Alors la je crois que tu dérape!

    1. Tu as enlevé le timestamp? Ca veut dire qu'en débug tu as modifié le contenu de ta variable? Normal que ça plante... Mais ce NoSuchError il est lancé ou?
    2. Tu parle de Date dans ton getter, veux-tu vraiment une date sql ou tu as pris le premier qui venait?
    3. Que te donne System.out.println(getDateCreation().toString())?

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    1 . En fait j'ai modifié ma base de données mysql pour mettre mon champ qui etait en time_stamp en date. Du coup dans ma jsp je peux rentrer mes dates sous le format jj/mm/aaaa. Mais c'est ensuite que j'ai l'erreur car apres avoir créer ma promo ma servlet envoie mon vecteur de promos et n'arrive pas a afficher la promo qui vient d'etre créé. J'ai vérifié dans ma base de données et j'ai bien les dates mais sous le format aaaa/mm/jj.

    2. utilisant une base de données je pensais que le format date sql correspondait a ce que j'avais besoin mais je n'en ai jamais utilisé donc je me trompe peut etre

    3. où veux tu que je mettes ton bout de code ?

  12. #12
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    La sauvegarde en bdd semble marcher. Peu importe le format de celle-ci en base de données, l'essentiel est de la formatter pour l'afficher à l'utilisateur.

    Maintenant tu veux afficher le résultat, c'est ta servlet qui s'occupe de l'affichage? Ou tu veut l'afficher dans une JSP?

  13. #13
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    En fait j'ai modifié ma base de données mysql pour mettre mon champ qui etait en time_stamp en date.
    tu ne devrais pas modifier le type de donnée d'un champ juste pour te simplifier la vie
    car la tu profites de pouvoir le faire mais ça ne sera pas toujours le cas donc faut mieux l'affronter maintenant pour les prochaines fois ou celui-ci se présentera à toi.
    Cela n'est que mon avis perso ^^


    peux tu nous montrer le code que tu utilises pour récuperer et mettre les données à jour dans ta table.

  14. #14
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    (Le jour où je devrais recupéré une base de données ou bosser sur une déja créé bien sur que je ne choisirais pas cette solution. Mais la je viens tout juste de finir ma formation de développeur logiciel je n'ai donc quasiment pas d'expérience, je suis en stage avec un poste a la clé donc faut que je fasses mes preuves et je bosses pour un site d'une boite qui représente 50% du CA de ma boite. Résultat j'ai pas le droit de me planter et si je peux me facilité la vie tout en respectant les délais je ne m'en priverais pas surtout que c'est invisible pour l'utilisateur)

    Sinon pour en revenir au code, j'arrive a enregistrer mes promos avec des dates mais si je laisse un champ de date vide il me met l'erreur logique qu'il ne peut pas la "parser". Du coup je pensais envoyé dans ma base de données une date bidon genre "00/00/0000" qui afficherait "pas de date" dans la JSP mais il n'arrive pas non plus a la "parser" vous voyez une autre solution ?

    Pour ta question yciabaud, je veux l'afficher par le biais d'une JSP et je vois pas comment changer le format d'affichage

  15. #15
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Tu veux vraiment pas nous montrer du code?

  16. #16
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Je peux si, c'est pas un problème mais c'est vachement long alors précisez ce que vous pensez utile de voir, j'ai donc une classe singulier promo avec les getter et setter, une classe pluriels promos qui créer le vecteur de promos et qui se charge de l'enregistrement, modification et suppression de promos, une servlet qui envoi le vecteur de promo et un indice ainsi que la gestion des boutons de ma JSP et ensuite ma JSP voila l'ossature de mon prog.

    Sinon le problème que j'ai actuellement c'est que je rentre des dates sous ce format jj/mm/aaaa et qu'elles sont enregistrés dans la base de données ET afficher dans ma JSP sous ce format aaaa-mm-jj et que donc lorsque je veux modifier ou supprimer une promo il n'arrive pas a "parser" le format aaaa-mm-jj, il faudrait donc que je gère mon affichage en jj/mm/aaaa sur ma JSP mais je vois pas comment faire

  17. #17
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Il faut que tu formatte ta date à l'affichage dans ta JSP avec SimpleDateFormat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <% SimpleDateFormat dateFormatter = new SimpleDateFormat(); %>
    <%= dateFormatter.format(promo.getDateCreation()) %>

  18. #18
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Résultat j'ai pas le droit de me planter et si je peux me facilité la vie tout en respectant les délais je ne m'en priverais pas surtout que c'est invisible pour l'utilisateur)
    Tu es dans l'erreur, car je ne suis pas sûr que cela joue en ta faveur de modifier un champ, tu pense que c'est invisible pour l'utilisateur ce qui est peut être le cas.Mais la personne qui a crée la table et mis 2 champs de type date et un 3eme en timeStamp c'est qu'il y a une raison derrière et que les données de cette colonne peuvent être réutilisées autre part.

    Du coup je pensais envoyé dans ma base de données une date bidon genre "00/00/0000" qui afficherait "pas de date" dans la JSP mais il n'arrive pas non plus a la "parser" vous voyez une autre solution ?
    une solution simple et que tu devrais appliquer partout qui est une règle de base contrôler tes champs suite à la saisie d'un utilisateur si tu ne les contrôle pas tu auras tous les plantages possible, derrière on te dira pourquoi sa plante ? tu n'as pas fait de test ? conséquence tu devra relivrer l'application pour correctif de bug.

    et dans un précédent post post que tu avais je t'avais répondu de tester tes variables avant de travailler dessus.

    si ta variable est null, contient des espaces, chaine vide tu dois le contrôler et dans ce cas tu en fait pas l'enregistrement en base ou tu retournes un message d'erreur à l'utilisateur "la date n'est pas au bon format" tu peux aussi ajouter des contrôles java script pour vérifier que les champs ne sont pas vide.

    Tu est en stage donc tu as peut être pas toutes les billes en main donc demande si tu as des règles à appliquer quand une date est pas saisie si celle-ci est obligatoire, si elle doit avoir une valeur par défaut.


    désoler si je te parais lourd ^^, mais c'est pout toi que je dis ça et ne pas prendre de mauvaise habitude en codant.

  19. #19
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    J'ai essayé de suivre ce que tu me disais yciabaud j'ai donc mis ca dans ma JSP, dis moi si c'est ce que tu voulais me faire comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <tr>
    <input type="hidden" name="id" value="<%=p.getIdPromo() %>">
    <td><input type="text" name="titre" value="<% out.println(p.getTitrePromo()); %>"></td>
    <td><input type="text" name="desc" value="<% out.println(p.getDescPromo()); %>"></td>
    <% SimpleDateFormat dateFormatter = new SimpleDateFormat(); %>
    <td><input type="text" name="datecreation" value="<%= dateFormatter.format(p.getDatecreation().toString()) %>"></td>
    <td><input type="text" name="datedebut" value="<%= dateFormatter.format(p.getDatedebut().toString()) %>"></td>
    <td><input type="text" name="datefin" value="<%= dateFormatter.format(p.getDatefin().toString()) %>"></td>
    <td><input type="image" name="miniphoto" src="<% out.println(p.getMiniphotoPromo()); %>"></td>
    <td><input type="image" name="photo" src="<% out.println(p.getPhotoPromo()); %>"></td>
    </tr>
    Pour le moment ca me met cette erreur : Cannot format given Object as a Date

  20. #20
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Pourquoi as-tu ajouté toString()? Sinon c'est ce que je voulez dire...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. formater une date dans une page JSP
    Par clavier12AZQSWX dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 03/11/2010, 15h17
  2. Format de date dans formulaire (ComboBox)
    Par vatfer dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/08/2010, 19h50
  3. [AC-2002] Problème format Date dans un formulaire de recherche
    Par babycoca dans le forum VBA Access
    Réponses: 7
    Dernier message: 19/06/2009, 11h51
  4. Réponses: 5
    Dernier message: 10/01/2008, 15h13
  5. utiliser un format "date heure" dans une formule
    Par Tonton Phil dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2007, 14h37

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