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 [FAQ]


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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,

    G un table dans ma base de donnée qui contient un champ date: dateAlbum.
    g une classe ActionForm qui me permet d'aller rechercher tt les valeurs de cette table,et de les afficher dans un formulaire. Par exemple la méthode me permettant de recuperer la date au bon format et de l'afficher dans un champ de mon formulaire est :

    public void setDateAlbum(Date dateAlbum){
    this.dateAlbum = dateAlbum;
    }


    Jusqu'ici aucun problème. J'arrive à avoir tt mes valeurs afficher dans leurs champs respectifs.

    Ce formulaire me permet aussi d'effectuer des modifications sur les valeurs remontées. Malheureusement lorsque je valide une saisie, j'obtiens cette erreur :


    exception

    javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


    cause mère

    java.lang.IllegalArgumentException: Cannot invoke fr.downtempo.AlbumForm.setDateAlbum - argument type mismatch
    org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)
    org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
    org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
    org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
    org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
    org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
    org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


    Ma question est la suivante :

    Comment puis je avoir l'erreur Cannot invoke fr.downtempo.AlbumForm.setDateAlbum - argument type mismatch alors que la propriété dateAlbum de mon ActionForm est de type Date et que dans ma BDD le champ dateAlbum est aussi de type Date ?

    Pourrais je avoir une explication ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Il me semble que c'est une histoire de classe Date qui existe sous deux formes : java.sql.Date et java.util.Date ...
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  3. #3
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    le mécanisme de BeanUtils va rechercher une méthode setDateAlbum(String dateAlbum) alors que tu as une méthode setDateAlbum(Date dateAlbum)

    En effet, tout ce que tu saisis dans ton formulaire, c'est finalement du texte et ce n'est pas typé.

    Eric

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Donc pour faire simple, je dois mettre tt les propriétés de mes classes ActionForm en type String et changer la signature de tt mes getter et setter pour kil prennent ou retourne un string ???

    Est ce que je dois faire pareil dans mes beans qui decrivent mes objets ?

    exemple : ma classe Action Form gère des Bean Album. g des propriétés de type int string date à l'interieur... la aussi j'enlève tt les types et je met du string ????????

    De plus, quand je vais insérer mes champs dans ma base, qui elle est typée, ça va pas poser des problèmes !?

    Y a un truk que je comprend pas la ...

  5. #5
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Du calme voyons.

    Pour les collections (y compris tableaux) ou agrégats, pas de problème puisque ce ne sont que des intermédiaires pour accéder à leurs propres attributs.

    Pour les attributs en général. Je dirais de par mon expérience que les types primitifs entiers et flottants sont pris en charge.

    Mais concernant la classe Date, il suffirait à priori d'écrire un setter avec l'autre signature et de convertir la String en Date

    Eric

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Par défaut
    Oui c'est tout a fait ça, dans l'action qui précède ton form, tu transformes ta date en String (via DateFormat et le bon pattern). Cette String est ensuite "settée" dans ton formulaire...

    Le mécanisme est identique pour récupérer ton champs date à partir du formulaire soumis par l'utilisateur

    ++

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