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 :

[struts BeanUtils.populate error] Passage deString a Date


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut [struts BeanUtils.populate error] Passage deString a Date
    Bonjour, je developpe une application struts.
    J'ai un formulaire qui prends en entrée une date. J'ai une ActionForm correspondant.
    Mon souci et que dans mon objet ActionForm la date est de type java.util.Date et dans le formulaire Http de type String.
    J'ai alors surcharger la méthode setDate de mon formulaire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
        public void setDateSortie (java.util.Date dateSortie) {
            this.dateSortie = dateSortie;
        }
     
        public void setDateSortie(String date) {
            this.dateSortie = DateUtils.convertStringToDate(date);
        }
    Tomcat me retourne cette erreur losrque que je submit mon formulaire :
    Citation Envoyé par tomcat
    javax.servlet.ServletException: BeanUtils.populate
    org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
    org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)
    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.planning.base.BaseCollaborateur.setDateSortie - 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:816)
    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)
    Il parviens pas a appeler la bonne méthode?
    Avec le debuggage j'arrive pas avoir ou passe le programme quand je submit, j'ai l'impression qu'il plante avant... mais ou?

    Merci pour votre aide.

  2. #2
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    La methode avec comme parametre String devrai etre appelé pourtant le message est clair, il y a un probleme de type de parametre, je comprends pas????

  3. #3
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    personne?

  4. #4
    Membre confirmé Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Par défaut
    POurrai tu me montrer ta jsp stp?

  5. #5
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    <%@ page language="java" %>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
     
        <layout:form action="saveCollaborateur.do" type="fr.planning.Collaborateur">
            <layout:panel styleClass="FORM" key="Ajouter un Collaborateur" >    
     
                <layout:cell><b>
                    <layout:write property="nom" />
                    <layout:write property="prenom" />
                </b></layout:cell>
     
                            <layout:text key="Nom : " style="align:left;" property="nom" styleClass="LABEL" />                                
     
                            <layout:cell />
     
                            <layout:text key="Prenom : " property="prenom" styleClass="LABEL" />
     
                            <layout:cell />
     
                            <layout:cell />
                                <layout:radios key="Situation : " styleClass="LABEL" property="situation.id">
     
                                    <layout:options collection="situations" name="situations" property="id" labelName="situations" labelProperty="libelle" />                        
     
                                </layout:radios>                    
     
     
                        <layout:select key="March&eacute : " styleClass="LABEL" property="marche.id">
                            <layout:option value="0" key="Aucun marché" />
                            <layout:options collection="marches" name="marches" property="id" labelName="marches" labelProperty="libelle" />                        
                        </layout:select>
     
     
                        <layout:select key="Fonction : " styleClass="LABEL" property="fonction.id">
                            <layout:option value="0" key="Aucune fonction" />
                            <layout:options collection="fonctions" name="fonctions" property="id" labelName="fonctions" labelProperty="libelle" />                        
                        </layout:select>
     
                        <layout:cell />
     
                        <layout:cell />
     
                            <layout:date key="Date d'entree : " property="dateEntree" styleClass="LABEL" patternKey="dd/MM/yyyy" mode="E,E,E" />
     
                        <layout:cell />
     
                        <layout:cell />
     
                        <layout:cell />
                            <layout:date key="Date de sortie : " property="dateSortie" styleClass="LABEL" startYear="<%= String.valueOf(java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) - 20) %>" endYear="<%= String.valueOf(java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) + 30) %>" mode="E,E,E" />        
                        <layout:cell />
     
                        <layout:date key="Date dispo : " property="dateDisponibilite" size="20" maxlength="10" styleClass="LABEL" startYear="<%= String.valueOf(java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) - 20) %>" endYear="<%= String.valueOf(java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) + 30) %>" patternKey="dd/MM/yyyy" />    
     
                        <layout:cell />
     
                        <layout:cell />
     
                        <layout:cell />
     
     
                            <layout:select key="Essai : " styleClass="LABEL" property="periodeEssai">
     
                                <layout:option value="0"/>
                                <layout:option value="1"/>
                                <layout:option value="2"/>
                                <layout:option value="3"/>
                                <layout:option value="4"/>
                                <layout:option value="5"/>
                                <layout:option value="6"/>
     
                            </layout:select> 
     
     
     
                        <layout:cell />
     
                        <layout:cell />
                        <layout:select key="Statut : " styleClass="LABEL" property="statut.id">
     
                            <layout:options collection="statuts" name="statuts" property="id" labelName="statuts" labelProperty="libelle" />
     
                        </layout:select>
     
                        <layout:cell />
     
                <layout:cell>            
                    <layout:button value="Annuler" onclick="document.location.href='collaborateur.do'" />
                    <layout:button value="Enregistrer" onclick="javascript:confirmationAjoutCollaborateur();"/>
     
                </layout:cell>
     
     
     
                </layout:panel>
     
            </layout:form>

    Je precise que le javascript de layout pour la date ne fonctionne pas... j'ai encode un souci avec, je rentre la date au bon format.
    Merci

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    salut,

    Une méthode 'setter', n'est pas faite pour etre surchargée.. ( Cannot invoke fr.planning.base.BaseCollaborateur.setDateSortie - argument type mismatch) il ne trouve pas la bonne méthode avec les parametres attendus..

    le mieux est d'utiliser le type String dans ton formulaire, ensuite, lors de l'utilisation de ta date, (dans un bean normalement) la convertir en type Date..

  7. #7
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    Ok, merci. Le probleme c'est que mon bean est un objet qui proviens d'un mapping avec hibernate.
    Donc si je supprimer le setter avec le parametre Date, je vais pas pouvoir le charger a partir de ma base...
    Je pensai a un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void setDate(Object obj){
    si c'est un string alors je le met en date
    si c'est une date -> ok
    }
    Est ce possible?, sinon comment faire?

    Merci

  8. #8
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    J'ai testé et maintenant c'est la chargement d'hibernate
    qui plante, je pense devoir faire un nouveau formulaire :S

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    le bean qui intéragit avec la base via hibernate ce n'est pas le form.??

    Il ne faut pas oublier que l'interet d'un formulaire est seulement de faire passer des paramètres de la page jsp à la servlet..

    Pour bien respecter le MVC, ta partie mapping doit etre indepedante du form. le setter et utiliser par Struts si j'ai bien compris, donc la valeur doit etre en String, tu dois passer par un bean qui transfert ces données à hibernate..et là tu converti le String en Date

  10. #10
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    j'ai 1 objet qui mappe la base et j'i crée un objet pour le form... et dans l'action je ferai la conversion....
    Je trouvai ça sympa de passer directement par l'objet mappé, mais c'est pas possible en fait.

  11. #11
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par agougeon
    j'ai 1 objet qui mappe la base et j'i crée un objet pour le form... et dans l'action je ferai la conversion....
    Je trouvai ça sympa de passer directement par l'objet mappé, mais c'est pas possible en fait.
    c'est surtout pas compatible avec le MVC et avec contraire au 'best practices' Struts..

    Il ne faut pas chercher à compliquer les choses.. Les solutions simples sont en générale meilleure

  12. #12
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    ok merci...

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

Discussions similaires

  1. [Struts 1.3.5] BeanUtils.populate
    Par DomIII dans le forum Struts 1
    Réponses: 17
    Dernier message: 07/12/2010, 10h37
  2. [struts] BeanUtils.populate
    Par otminou dans le forum Struts 1
    Réponses: 4
    Dernier message: 23/09/2007, 18h27
  3. [Struts]Bean populate & array index out of bound
    Par djoukit dans le forum Struts 1
    Réponses: 7
    Dernier message: 02/11/2006, 11h03
  4. [ struts ] "BeanUtils.populate"
    Par stela86 dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/05/2006, 12h27
  5. [Struts][Tomcat ] HTTP 500 - BeanUtils.populate (Eclipse)
    Par pjfly dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 10/04/2004, 10h03

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