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 2 Java Discussion :

Date format, textfield, validation comment gérer tout ça correctement ?


Sujet :

Struts 2 Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Date format, textfield, validation comment gérer tout ça correctement ?
    Bonjour,

    j'aimerais afficher des dates dans un textfield dans le format français dd/MM/yyyy tout en affichant correctement les erreurs de conversion de date s'il y en a.

    Or j'ai vraiment du mal à comprendre ce qu'il se passe dans struts.

    Dans la JSP j'ai essayé de faire le plus simple naivement :

    <s:textfield key="maDate"/>

    Et j'ai déclaré un champ 'maDate' java.util.Date dans on action.

    Mais quand j'affiche des données qui viennent de la base de donnée (non saisies par l'utilisateur), les données s'affichent comme ceci 29/01/09.

    D'ailleurs j'aimerais que vous m'éclairiez sur ce point concernant les validations des dates.
    La locale de mon appli étant "france" quand j'enregistre 29/01/2009 ca passe et quand je met 01/29/2009 j'ai bien une erreur de validation et dans le texte field j'ai bien la valeur saisie c'est à dire 01/29/2009. Mais j'avoue que je suis surpris puisque si STRUTS récupère le champ maDate contenu dans mon action, ce champ date devrait être vide, puisque la conversion n'a pas été possible. Par défaut, STRUTS est-il assez intelligent pour récupérer d'abord ce qu'il y a dans la requete HTTP avant d'aller chercher dans l'action ?

    Après ce petit apparté, pour résoudre mon problème initial, j'ai bien tenté de suivre ce qu'il y a écrit là : http://struts.apache.org/2.x/docs/fo...d-numbers.html

    Mais il y a toujours un problème : j'ai mis date.format dans mon ressoruces bundle puis :

    <s:textfield key="maDate" value="%{getText('format.date',{maDate})}" />

    mais dans ce cas, c'est nul car je n'ai plus la valeur remplie par l'utilisateur mais ce qui vient de mon action, c'est à dire null puisque la conversion a échoué.

    Est-ce que je passe a coté de quelque chose ou faut-il utiliser des champ string pour représenter les dates pour les textes field (ca serait un peu nul quand même) ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 136
    Points : 112
    Points
    112
    Par défaut
    Bonjour,

    il faut créer un converter où tu indiques comment transformer ta date en string et vice-versa. Tu crées un fichier qui s'appelle
    "nomAction-conversion.properties"
    A l'intérieur tu écris la ligne suivante :
    nomDeTonChampDate=com.blabla.MyConverter
    où MyConverter est la classe que tu veux utiliser pour convertir ta date.
    Tu fais hériter MyConverter de StrutsTypeConverter, tu redéfinis les méthodes fromString et toString (tu utiliseras probablement SimpleDateFormat).

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par brassouille Voir le message
    Bonjour,

    il faut créer un converter où tu indiques comment transformer ta date en string et vice-versa. Tu crées un fichier qui s'appelle
    "nomAction-conversion.properties"
    A l'intérieur tu écris la ligne suivante :
    nomDeTonChampDate=com.blabla.MyConverter
    où MyConverter est la classe que tu veux utiliser pour convertir ta date.
    Tu fais hériter MyConverter de StrutsTypeConverter, tu redéfinis les méthodes fromString et toString (tu utiliseras probablement SimpleDateFormat).
    Oui mais ca ne me va pas "conceptuellement", l'inférence du format en fonction du type de la donnée et de la locale, n'est pas adapté dans le cas d'une date, car on pourrait vouloir afficher la date dans différents formats (pour une même locale), or j'ai l'impression que STRUTS dans les tag textfield ne permet pas de passer ce format. De plus même si la doc struts explique très bien comment faire de nouveau converter, ta solution n'est pas ce qui est dit de faire dans le guide STRUTS concernant le formattage des dates : http://struts.apache.org/2.x/docs/fo...d-numbers.html.

    Je préfère attendre que le mécanisme de validation soit vraiment normé éventuellement dans la JSR 303 : http://jcp.org/aboutJava/communitypr...303/index.html, pour pouvoir gérer cela intelligemment, pour l'instant je déclare mes champs date comme des String et je fais les validations moi-même dans l'action.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2009, 12h51
  2. Réponses: 4
    Dernier message: 08/08/2006, 12h47
  3. [VB.Net/Dataview] Comment gérer un filtre sur une colonne de type date ?
    Par silatchom dans le forum Accès aux données
    Réponses: 3
    Dernier message: 07/07/2006, 19h28
  4. [Dates] Comment gérer les dates sur un blog ?
    Par psychoBob dans le forum Langage
    Réponses: 10
    Dernier message: 14/06/2006, 14h09
  5. [java.sql.Date] format compatible tout sgbd ?
    Par djskyz dans le forum JDBC
    Réponses: 8
    Dernier message: 15/09/2004, 11h28

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