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 :

Erreurs après modification


Sujet :

Struts 1 Java

  1. #1
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut Erreurs après modification
    Bonjour,
    voilà mon problème :

    J'ai une page (page 1) qui m'affiche les informations concernant un enregistremetn de ma base de données. (Pas de problème sur cette page)

    Lorsque je clique sur un boutton, je me retrouve sur une page similaire (page 2) mais sur laquelle on peut modifier les informations. (Pas de problème à ce moment non plus). A cette page, les valeurs des champs du formulaire sont passées via request.setAttribute dans ma classe action qui s'exécute pour l'affichage.

    Lorsque je fais des modifications "correctes" (sans erreurs), tout se déroule correctement et l'enregistrement est modifié dans la base de donnée et je me retrouve sur la première page(page 1). Mais lorsque j'ai des erreurs, il est sensé me rediriger vers la page de modification(page 2) (ce qu'il fait) mais à ce moment là, les valeurs que j'avais passées via le request.setAttribute ne sont plus visibles et j'ai un message d'erreur.

    Comment y remédier ?
    Shiv@ Skunk

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Si tu fais un request.setAttribute(...), tu mets ton objet dans le contexte requete, il est donc normal que sur la requête suivante (le post de ton formulaire), tu ne les retrouves pas. C'est en session que tu dois mettre tes attributs si tu veux qu'ils perdurent au delà de ta première requête.

    Mais, ce que je ne comprends pas, c'est pourquoi tu n'utilises pas Struts pour stocker tes données à afficher (mettre tout ca dans un ActionForm au lieu d'attributs de requête) ? Si tu faisais ça, tu n'aurais qu'à mettre ton form en session (par exemple, mais ca peut se faire en contexte requete aussi, mais généralement c'est plus compliqué) dans le struts-config, et tes données seront gardées et réaffichées.

    Etant donné que c'est le principal intérêt de Struts, je ne vois pas pourquoi tu passes par des attributs de requête.

  3. #3
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    En effet, j'ai corrigé ça, c'était un des seuls formulaires que j'avais pas modifiés (un des premiers que j'ai fait avec struts).

    Le problème que j'ai maintenant, c'est au retour sur un formulaire dans lequel il y avait une liste déroulante (property du formulaire), il me dit qu'il n'y a pas de collection et est incapable de me réafficher la liste déroulante. Une idée d'où ça peut venir?
    Shiv@ Skunk

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    Cette liste déroulante elle vient d'ou? C'est une transcription de ton ArrayList dans un Form? ou c'est un truc que tu mets en session depuis l'action au premier passage? Ma question en fait est tout simplement de savoir quand est ce que tu initialises ce qui rempli ta liste qu'il te dit nulle ....
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    ... et où est-ce que tu stockes cette liste (session ? request ? form en session ? form en request ?)

  6. #6
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    ma liste est initialisée au premier affichage de ma page en tant que propriété de mon formulaire, comme le reste de mes champs qui eux sont parfaitement conservés au deuxième affichage de ma page (en cas d'erreur)
    Shiv@ Skunk

  7. #7
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Comme avant tu mettais la collection dans le scope via un request.setAttribute ou session.setAttribute, tu as dû utiliser le tag html:options dans la jsp comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:options collection="laCollection" property="id" labelProperty="libelle"/>
    Maintenant, la collection étant une propriété du formulaire, il faut utiliser le tag html:optionsCollection comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:optionsCollection property="laCollection" value="id" label="libelle"/>
    Modératrice Java - Struts, Servlets/JSP, ...

  8. #8
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Le code que j'ai pour le moment c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <select name="act" onchange="choix_liste(act.value);">
    	<% String s="";%>
    	<bean:define id="test" name="modifClientForm" property="id_act" type="java.lang.String"/>
    	<logic:iterate id="item" name="liste_act">
    		<% s="";%>
    		<logic:equal name="item" property="id" value="<%=test%>">
    			<%s="selected";%>
    		</logic:equal>
    		<option value="<bean:write name="item" property="id" filter="false"/>" <%=s%>><bean:write name="item" property="lib" filter="false"/></option>
    	</logic:iterate>
    	</select>
    Mon formulaire s'appelle "modifClientForm", id_act est l'id actuel de l'activité, act est l'id de la nouvelle activité, liste_act est la liste des activités disponibles.

    Comment je peux transformer ça avec le optionsCollection ?
    Shiv@ Skunk

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Et bien, si liste_act est une propriété (bien mal nommée ) de modifClientForm, ca donne (si ton form est le form de l'action, sinon il faut ajouter name="modifClientForm") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:optionsCollection property="liste_act" value="id" label="lib"/>
    C'est quand même plus simple...

  10. #10
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="act" onchange="choix_liste(act.value);">
       <html:optionsCollection property="liste_act" value="id" label="lib"/>
    </html:select>
    Et pour que l'id sélecté par défaut soit celui qui a pour valeur la valeur d'id_act, dans l'Action qui initialise le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm=(TonActionForm) form ;
    tonActionForm.setAct(id_act) ;
    EDIT : encore grillée par mixouille
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par mixouille
    Et bien, si liste_act est une propriété (bien mal nommée )
    Pourquoi bien mal nommée ? liste_act pour liste_activités je vois pas en quoi c'est mal nommé
    Shiv@ Skunk

  12. #12
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Parce que tu ne respectes pas les conventions de nommage java.
    Tu devrais la renommer en listeAct ou listeActivites.
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Je vois ce que tu veux dire mais j'ai tellement de problèmes avec les majuscules que j'ai décidé de ne plus en mettre dans les noms de variable parce que une fois sur deux je l'oublie et du coup je me perds dans le nom des variables, c'est pourquoi je remplace la majuscule par un "_" Mais je comprends pourquoi ça peut déranger.

    Sinon, merci à vous, mon problème est résolu.

    En fait non, il n'est pas résolu.

    Alors je récapitule, j'ai dans mon fichier strus-config.xml :

    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
    <action
            	path="/FicheClient"
            	type="gescom_pkg.FicheClientAction"
            	name="ficheClientForm"
            	input="/pages/FicheClient.jsp"
            	validate="true">
                	<forward name="success" path="/pages/FicheClient.jsp" redirect="false"/>
                	<forward name="failure" path="/pages/FicheClient.jsp" />
        	</action>
    	    <action
            	path="/ModifClient"
            	type="gescom_pkg.FicheClientAction"
            	name="ficheClientForm"
            	input="/pages/ModifClient.jsp"
            	validate="true">
                	<forward name="success" path="/pages/ModifClient.jsp" redirect="false"/>
                	<forward name="failure" path="/pages/ModifClient.jsp" />
        	</action>
    	   <action
            	path="/ValiderModifClient"
            	type="gescom_pkg.ModifClientAction"
            	name="modifClientForm"
            	input="/pages/ModifClient.jsp"
            	validate="true">
                	<forward name="success" path="/pages/FicheClient.jsp" redirect="false"/>
                	<forward name="failure" path="/pages/ModifClient.jsp" />
        	</action>
    Fichier FicheClient.jsp :
    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
     
    <html:form action="/ModifClient" name="modifClientForm" type="gescom_pkg.ModifClientForm">
    <table width=100% border=0>
    <tr height=20><td width=50% valign=top><bean:message key="NameClient.label"/>: </td>
    <td width=50% align=left>
    <html:text readonly="true" name="modifClientForm" property="intitule"/><br><br></td></tr>
    <tr height=20><td valign=top><bean:message key="Responsible.label"/> : </td>
    <td><html:text readonly="true" name="modifClientForm" property="utilisateur"/><br><br></td></tr>
    <tr><td colspan=2><hr></td></tr>
    <tr height=20><td width=50% valign=top><bean:message key="Coord.label"/> : </td>
    <td><textarea cols=30 rows=4 readonly><bean:write name="modifClientForm" property="adresse"/>
    <bean:write name="modifClientForm" property="cp"/>
    <bean:write name="modifClientForm" property="ville"/>
    <bean:write name="modifClientForm" property="pays"/></textarea><br><br></td></tr>
    ...
    </html:form>
    Ficher ModifClient.jsp
    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
    <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
    <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
    <%@ taglib uri="/tags/struts-html" prefix="html" %>
    <html>
    <head>
    <title><bean:message key="welcome.title"/> - <bean:message key="Client.details.label"/></title>
    <link href="pages/style.css" rel="stylesheet" type="text/css">
    <script language="javascript">
    function choix_liste(choix)
    {
    	if(choix=="0")
    	{
    		document.getElementById("test").style.display='';
    	}
    	else
    	{
    		document.getElementById("test").style.display='none';
    	}
    }
    function retour()
    {
    	document.forms[0].action='FicheClient.do';
    	document.forms[0].submit();
    }
    function verifForm()
    {
     
    	document.forms[0].submit();
    }
    </script>
    </head>
    <body>
    <h1><bean:message key="Client.details.label"/> :</h1>
    <html:form action="/ValiderModifClient" name="modifClientForm" type="annuaire_pkg.ModifClientForm">
    <table width=100%><tr><td align=right>
    <html:hidden name="modifClientForm" property="idClient"/>
    <button type='button' onClick='javascript:retour()'><img src='images/no.gif'> <bean:message key="Cancel.label"/></button>&nbsp;&nbsp;&nbsp;
    <button type='button' onClick='javascript:verifForm()'><img src='images/ok.gif'> <bean:message key="Valid.label"/></button>&nbsp;&nbsp;&nbsp;
    <button type='button' onClick='javascript:window.close();'><img src='images/Exit.gif'> <bean:message key="Close.label"/></button></td></tr></table><br>
    <font color=red><html:errors/></font>
    <table width=100% border=0>
    <tr height=20><td width=50% valign=top><bean:message key="LastName.label"/> : </td><td>
    <html:text property="intitule" name="modifClientForm"/><br><br></td></tr>
    <tr height=20><td width=50% valign=top><bean:message key="Address.label"/> : </td><td>
    <html:text property="adresse" name="modifClientForm"/></td></tr>
    <tr height=20><td width=50% valign=top><bean:message key="ZIPCode.label"/> : </td><td>
    <html:text property="cp" name="modifClientForm"/></td></tr>
    <tr height=20><td width=50% valign=top><bean:message key="City.label"/> : </td><td>
    <html:text property="ville" name="modifClientForm"/></td></tr>
    <tr height=20><td width=50% valign=top><bean:message key="Country.label"/> : </td><td>
    <html:text property="pays" name="modifClientForm"/></td></tr>
     
    <tr height=20><td valign=top><bean:message key="Activity.label"/> : </td>
    <td>
    <html:select property="act" onchange="choix_liste(act.value);">
       <html:optionsCollection name="modifClientForm" property="liste_act" value="id" label="lib"/>
    </html:select><br>
    </td></tr>
    <tr height=20 id="test" style="display:none"><td></td><td><bean:message key="NewActivity.label"/> : <html:text property="autreactivite" value="autre"/>
    </td></tr>
     
    <tr height=20><td width=50% valign=top><bean:message key="Responsible.label"/> : </td><td>
    <html:select property="id_util">
       <html:optionsCollection name="modifClientForm" property="liste_util" value="id" label="nom"/>
    </html:select>
    </td></tr>
    <tr height=20><td width=50% valign=top><bean:message key="Comments.label"/> : </td><td><html:textarea cols="30" rows="4" property="commentaires" name="modifClientForm"/><br><br></td></tr>
    <tr height=20><td width=50% valign=top><bean:message key="Axe_Dev.label"/> : </td><td><html:textarea cols="30" rows="4" property="axes_dev" name="modifClientForm"/><br><br></td></tr>
    </html:form>
    </body>
    </html>
    Fichier ModifClientForm.java
    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
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    package gescom_pkg;
     
    import java.util.ArrayList;
     
    import org.apache.struts.action.*;
     
    import javax.servlet.http.HttpServletRequest;
    public class ModifClientForm extends ActionForm
    {
    	static final long serialVersionUID=1;
    	private String intitule;
    	private String adresse;
    	private String cp;
    	private String ville;
    	private String pays;
    	private String commentaires;
    	private String idClient;
    	private String utilisateur;
    	private String id_util;
    	private String id_act; // id de l'activité courante
    	private String act; // id de l'activité choisie
    	private String activite; //libellé de l'activité courante
    	private String autreactivite; // libellé de la nouvelle activité
    	private ArrayList<Activite> liste_act;
    	private ArrayList<Utilisateur> liste_util;
    	private String axes_dev;
    	private String desc_fonc;
    	private String nbPrest;
    	private String ca;
    	private String entreprise;
    	private String direction;
     
    	public String getDirection()
    	{return direction;}
    	public void setDirection(String direction)
    	{this.direction=direction;}
     
    	public String getEntreprise()
    	{return entreprise;}
    	public void setEntreprise(String entreprise)
    	{this.entreprise=entreprise;}
     
        public String getCa()
        {return ca; }
        public void setCa(String ca)
        {this.ca = ca; }
     
        public String getNbPrest()
        {return nbPrest; }
        public void setNbPrest(String nbPrest)
        {this.nbPrest = nbPrest; }
     
        public String getDesc_fonc()
        {return desc_fonc; }
        public void setDesc_fonc(String desc_fonc)
        {this.desc_fonc = desc_fonc; }
     
        public String getAxes_dev()
        {return axes_dev; }
        public void setAxes_dev(String axes_dev)
        {this.axes_dev = axes_dev; }
     
        public ArrayList<Utilisateur> getListe_util()
        {return liste_util; }
        public void setListe_util(ArrayList<Utilisateur> liste_util)
        {this.liste_util = liste_util; }
     
        public ArrayList<Activite> getListe_act()
        {return liste_act; }
        public void setListe_act(ArrayList<Activite> liste_act)
        {this.liste_act = liste_act; }
     
        public String getId_act()
        {return id_act; }
        public void setId_act(String id_act)
        {this.id_act = id_act; }
     
        public String getId_util()
        {return id_util; }
        public void setId_util(String id_util)
        {this.id_util = id_util; }
     
        public String getAutreactivite()
        {return autreactivite; }
        public void setAutreactivite(String autreactivite)
        {this.autreactivite = autreactivite; }
     
        public String getAct()
        {return act; }
        public void setAct(String act)
        {this.act = act; }
     
        public String getActivite()
        {return activite; }
        public void setActivite(String activite)
        {this.activite = activite; }
     
        public String getUtilisateur()
        {return utilisateur; }
        public void setUtilisateur(String utilisateur)
        {this.utilisateur = utilisateur; }
     
        public String getIdClient()
        {return idClient; }
        public void setIdClient(String idClient)
        {this.idClient = idClient; }
     
        public String getIntitule()
        {return intitule; }
        public void setIntitule(String Intitule)
        {this.intitule = Intitule; }
     
        public String getAdresse()
        {return adresse; }
        public void setAdresse(String adresse)
        {this.adresse = adresse; }
     
        public String getCp()
        {return cp; }
        public void setCp(String cp)
        {this.cp = cp; }
     
        public String getVille()
        {return ville; }
        public void setVille(String ville)
        {this.ville = ville; }
     
        public String getPays()
        {return pays; }
        public void setPays(String pays)
        {this.pays = pays; }
     
        public String getCommentaires()
        {return commentaires; }
        public void setCommentaires(String commentaires)
        {this.commentaires = commentaires; }
     
        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
        {
            ActionErrors errors = new ActionErrors();
            if (getIntitule() == null || getIntitule().length() < 1)
            {
                errors.add("user", new ActionError("errors.required", "Intitule"));
            }
            if(getAct().compareTo("0")==0 && getAutreactivite().compareTo("autre")==0)
            {
            	errors.add("user",new ActionError("errors.required","La nouvelle activité"));
            }
            System.out.println(getListe_act());
            return errors;
        }
    }
    Fichier ModifClientAction.java
    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
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
     
    package gescom_pkg;
    import org.apache.struts.action.*;
     
    import javax.servlet.http.*;
     
    import java.sql.ResultSet;
    import java.util.*;
     
    public class FicheClientAction  extends Action
        {
     
            public ActionForward execute(ActionMapping mapping,
                        ActionForm form,
                        HttpServletRequest req, HttpServletResponse res)
                        throws Exception
            {
            	FicheClientForm ficheClientForm = (FicheClientForm) form;
                ActionErrors errors = new ActionErrors();
                ActionError newError = null;
                HttpSession session=req.getSession();
                if(session.getAttribute("id_util")==null){
    				errors = new ActionErrors();
    	  	      	errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.session"));
    	  	      	if(!errors.isEmpty())
    		  	    	saveErrors(req,errors);
    	  	      	return mapping.findForward("sessionexpiree");
    			}
     
                String idClient ="0";
                ArrayList<Utilisateur> utilisateurs = new ArrayList<Utilisateur>();
                ArrayList<Activite> activites = new ArrayList<Activite>();
     
                try
                {
                	idClient=ficheClientForm.getIdClient();
                	ModifClientForm formul=new ModifClientForm();
                	// R�cup�ration des informations sur le Client
                	ConnexionBDD connec=new ConnexionBDD();
                	connec.DBConnexion();
                	String s="SELECT * from activite;";
                	ResultSet rs=connec.getResultat(s);
                	while(rs.next())
                	{
                		activites.add(new Activite(rs.getString("ACT_ID"),rs.getString("ACT_LIB")));
                	}
            		activites.add(new Activite("0","Autre"));
     
                	s="SELECT * from utilisateur where UTI_ROLE='C';";
                	rs=connec.getResultat(s);
                	while(rs.next())
                	{
                		utilisateurs.add(new Utilisateur(rs.getString("UTI_ID"),rs.getString("UTI_NOM")+" "+rs.getString("UTI_PRENOM")));
                	}
                	utilisateurs.add(new Utilisateur("0","Aucun"));
     
                	formul.setListe_util(utilisateurs);        
                	formul.setListe_act(activites);            	
     
                	s="select * from organisation where ORG_ID ="+idClient+"";
                	//System.out.println(s);
                	rs=connec.getResultat(s);
                	int i=0;
                	while(rs.next())
                	{
                		i++;
                	}
                	if (i>0)
                	{
                		rs.first();
                		formul.setIdClient(idClient);
                		formul.setIntitule(rs.getString("ORG_INTITULE"));
                		//formul.setOrganigramme(rs.getString("ORG_ORGANIGRAMME"));
                		formul.setAxes_dev(rs.getString("ORG_AXE_DEV"));
                		formul.setCommentaires(rs.getString("ORG_COMM"));
                		if(rs.getString("ACT_ID")!=null)
                		{
                			formul.setId_act(rs.getString("ACT_ID"));
                    		String s2="select * from activite where ACT_ID='"+rs.getString("ACT_ID")+"'";
                    		ResultSet rs_act=connec.getResultat(s2);
                    		rs_act.first();
                    		formul.setActivite(rs_act.getString("ACT_LIB"));
                		}
                		else
                		{
                    		formul.setId_act("0");
                    		formul.setActivite("Autre");
                		}
                		formul.setAct(formul.getId_act());
                		String utilisateur=rs.getString("UTI_ID");
                		if(utilisateur!=null)
                		{
                			String util="select * from utilisateur where UTI_ID="+utilisateur;
                			ResultSet rs_util=connec.getResultat(util);
                			rs_util.first();
                			formul.setUtilisateur(rs_util.getString("UTI_PRENOM")+" "+rs_util.getString("UTI_NOM"));
                			formul.setId_util(rs_util.getString("UTI_ID"));
                		}
                		else
                		{
                			formul.setUtilisateur("Aucun");
                			formul.setId_util("0");
                		}
                		ArrayList<Interlocuteur> interlocuteurs=new ArrayList<Interlocuteur>(); 
                		ArrayList<Interlocuteur> interlocuteur_privilegie=new ArrayList<Interlocuteur>();
                		//r�cup�ration des coordonn�es de l'interlocuteur
                		String s2="select * from interlocuteur where ORG_ID="+idClient;
                    	//System.out.println(s2);
                		ResultSet rs2=connec.getResultat(s2);
                		int j=0;
                		while(rs2.next())
                		{
                			j++;
                		}
                		if(j>0)
                		{
                			ResultSet rs3=connec.getResultat("select * from interlocuteur_privilegie,interlocuteur where interlocuteur_privilegie.ORG_ID='"+idClient+"' and interlocuteur_privilegie.ITL_ID=interlocuteur.ITL_ID");
                			int int_priv=0;
                			while(rs3.next())
                			{
                				int_priv++;
                			}
                			//un interlocuteur privil�gi�
                			if(int_priv>0)
                			{
                				rs3.first();
                				interlocuteur_privilegie.add(new Interlocuteur(rs3.getString("ITL_ID"),rs3.getString("ITL_NOM"),rs3.getString("ITL_PRENOM"),rs3.getString("ITL_ADD"),rs3.getString("ITL_CP"),rs3.getString("ITL_VIL"),rs3.getString("ITL_PAYS"),rs3.getString("ITL_TEL"),rs3.getString("ITL_MAIL"),rs3.getString("ITL_MOBILE"),rs3.getString("ITL_FAX")));
                    			//r�cup�ration de la liste des autres interlocuteurs
                    			rs2.first();
                    			if(rs2.getString("ITL_ID").compareTo(rs3.getString("ITL_ID"))!=0)
                				{
                        			interlocuteurs.add(new Interlocuteur(rs2.getString("ITL_ID"),rs2.getString("ITL_NOM"),rs2.getString("ITL_PRENOM"),rs2.getString("ITL_ADD"),rs2.getString("ITL_CP"),rs2.getString("ITL_VIL"),rs2.getString("ITL_PAYS"),rs2.getString("ITL_TEL"),rs2.getString("ITL_MAIL"),rs2.getString("ITL_MOBILE"),rs2.getString("ITL_FAX")));                					
                				}
                    			while(rs2.next())
                    			{
                    				if(rs2.getString("ITL_ID").compareTo(rs3.getString("ITL_ID"))!=0)
                    				{
                    					interlocuteurs.add(new Interlocuteur(rs2.getString("ITL_ID"),rs2.getString("ITL_NOM"),rs2.getString("ITL_PRENOM"),rs2.getString("ITL_ADD"),rs2.getString("ITL_CP"),rs2.getString("ITL_VIL"),rs2.getString("ITL_PAYS"),rs2.getString("ITL_TEL"),rs2.getString("ITL_MAIL"),rs2.getString("ITL_MOBILE"),rs2.getString("ITL_FAX")));                					
                    				}
                    			}
                			}
                			//aucun interlocuteur privil�gi�, on prend le premier
                			else
                			{
                    			rs2.first();
                    			interlocuteurs.add(new Interlocuteur(rs2.getString("ITL_ID"),rs2.getString("ITL_NOM"),rs2.getString("ITL_PRENOM"),rs2.getString("ITL_ADD"),rs2.getString("ITL_CP"),rs2.getString("ITL_VIL"),rs2.getString("ITL_PAYS"),rs2.getString("ITL_TEL"),rs2.getString("ITL_MAIL"),rs2.getString("ITL_MOBILE"),rs2.getString("ITL_FAX")));
                    			while(rs2.next())
                    			{
                    				interlocuteurs.add(new Interlocuteur(rs2.getString("ITL_ID"),rs2.getString("ITL_NOM"),rs2.getString("ITL_PRENOM"),rs2.getString("ITL_ADD"),rs2.getString("ITL_CP"),rs2.getString("ITL_VIL"),rs2.getString("ITL_PAYS"),rs2.getString("ITL_TEL"),rs2.getString("ITL_MAIL"),rs2.getString("ITL_MOBILE"),rs2.getString("ITL_FAX")));
                    			}
                			}
                			req.setAttribute("Interlocuteur_privilegie", interlocuteur_privilegie);
                			req.setAttribute("Interlocuteurs", interlocuteurs);
                		}
                		else
                		{
                			req.setAttribute("Interlocuteur_privilegie", interlocuteur_privilegie);
                			req.setAttribute("Interlocuteurs", interlocuteurs);
                		}
                		//r�cup�ration de l'implantation g�ographique
                		s2="select * from coordonnee where ORG_ID="+idClient;
                    	//System.out.println(s2);
                		rs2=connec.getResultat(s2);
                		j=0;
                		while(rs2.next())
                		{
                			j++;
                		}
                		if(j>0)
                		{
                			rs2.first();
                			formul.setAdresse(rs2.getString("COO_ADD"));
                			formul.setCp(rs2.getString("COO_CP"));
                			formul.setVille(rs2.getString("COO_VIL"));
                			formul.setPays(rs2.getString("COO_PAYS"));
                		}
                		else
                		{
                			formul.setAdresse("");
                			formul.setCp("");
                			formul.setVille("");
                			formul.setPays("");
                		}
                	}
                	Calendar c = GregorianCalendar.getInstance();
            		c.setTime(new Date());
            		int day = c.get(Calendar.DAY_OF_MONTH);
            		int month = c.get(Calendar.MONTH)+1;
            		int year = c.get(Calendar.YEAR);
     
            		int date_actuelle = year*10000 + month*100 + day*1;
     
            		s="select * from mission where ORG_ID='"+idClient+"'";
            		ResultSet rs_missions=connec.getResultat(s);
            		int NbPrest=0;
            		int CA=0;
            		while(rs_missions.next())
            			NbPrest++;
            		if(NbPrest>0)
            		{
            			NbPrest=0;
            			rs_missions.first();
            			String date_debut=rs_missions.getString("MIS_DAT_DEB");
            			String date_fin=rs_missions.getString("MIS_DAT_FIN");
            			int dd=Integer.valueOf(date_debut.substring(0,4)+date_debut.substring(5,7)+date_debut.substring(8,10));
            			int df=Integer.valueOf(date_fin.substring(0,4)+date_fin.substring(5,7)+date_fin.substring(8,10));
            			if(dd<=date_actuelle && date_actuelle<=df)
            			{
            				NbPrest++;
        					CA=CA+Integer.valueOf(rs.getString("MIS_TARIF"));
            			}
            			while(rs_missions.next())
            			{
            				date_debut=rs_missions.getString("MIS_DAT_DEB");
                			date_fin=rs_missions.getString("MIS_DAT_FIN");
                			dd=Integer.valueOf(date_debut.substring(0,4)+date_debut.substring(5,7)+date_debut.substring(8,10));
                			df=Integer.valueOf(date_fin.substring(0,4)+date_fin.substring(5,7)+date_fin.substring(8,10));
                			if(dd<=date_actuelle && date_actuelle<=df)
                			{
                				NbPrest++;
            					CA=CA+Integer.valueOf(rs.getString("MIS_TARIF"));
                			}
            			}
            		}            		
            		formul.setCa(CA+"");
            		formul.setNbPrest(""+NbPrest);
                	connec.BDDeconnexion();
            		req.setAttribute("modifClientForm",formul);
            		return mapping.findForward("success");
                }
                catch (Exception e)
                {
                	System.out.println(e);
                	newError = new ActionError("errors.db.not.found");
                	errors.add(ActionErrors.GLOBAL_ERROR, newError);
     
                	saveErrors(req, errors);
                	return  mapping.findForward("failure");
                }
            }
    }
    Et donc lorsque j'ai une erreur au niveau du validate de ma classe ModifClientForm, je suis redirigée vers modifClient.jsp, laquelle ne retrouve pas les collections que je souhaitais afficher.
    Shiv@ Skunk

  14. #14
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Toujours personne? je comprends toujours pas pourquoi il ne me garde pas la valeur de la collection alors que les autres champs il les conserve.

    Le seul moment ou il conserve les collections, c'est quand je valide le formulaire de modification une fois de façon correcte puis que je recommence. Si à ce moment là j'ai une erreur, alors il me redirige sur la bonne page avec le message d'erreur qui s'affiche correctement et le bon formulaire avec le listes en dessous.
    Shiv@ Skunk

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Peut-être une piste, en tout cas quelque chose de bizarre dans ton code :

    Dans <html:form>, tu définis un attribut "name" (qui n'existe pas pour la balise form, ca te renvoie pas d'erreur ? peut-être que ca dépend de la version de struts).
    Toujours est-il que tu peux essayer de virer cet attribut, et ton attribut type (qui n'existe pas plus dans la DTD) tant que tu y est, et remplacer tes références à "modifClientForm" par "ficheClientForm" (qui est le form de ton action /ModifClient).

  16. #16
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    A ce que je vois, tu utilises deux form-bean dans la même Action.
    Pas étonnant que tu aies des problèmes.

    Enfin, essaie de mettre ton form-bean en scope session en remplaçant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           		req.setAttribute("modifClientForm",formul);
    par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           		req.getSession().setAttribute("modifClientForm",formul);
    Une petite info pour mixouille, les attributs name et type du tag html:form existent en Struts 1.1.
    Modératrice Java - Struts, Servlets/JSP, ...

  17. #17
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par mixouille
    Peut-être une piste, en tout cas quelque chose de bizarre dans ton code :

    Dans <html:form>, tu définis un attribut "name" (qui n'existe pas pour la balise form, ca te renvoie pas d'erreur ? peut-être que ca dépend de la version de struts).
    Toujours est-il que tu peux essayer de virer cet attribut, et ton attribut type (qui n'existe pas plus dans la DTD) tant que tu y est, et remplacer tes références à "modifClientForm" par "ficheClientForm" (qui est le form de ton action /ModifClient).
    ficheClientForm est le formulaire de la page précédent qui a que peu de propriété dont l'identifiant de client pour récupérer toutes ses infos dans la BDD et les mettre dans un formulaire de type ModifClientForm
    Shiv@ Skunk

  18. #18
    Membre averti Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par c_nvy
    A ce que je vois, tu utilises deux form-bean dans la même Action.
    Pas étonnant que tu aies des problèmes.
    Comment ça ?

    Et ce que vous ne paraissez pas comprendre c'est que ça n'a rien à voir avec le stockage de mon formulaire puisque les autres champs sont parfaitement réaffichés (si j'enlève la partie sur les collections dans ma page ModifClient.jsp et que je commets une erreur dans le formulaire, il me réaffiche la même page avec les message d'erreur et les champs sont bien remplis).
    Shiv@ Skunk

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par c_nvy
    Une petite info pour mixouille, les attributs name et type du tag html:form existent en Struts 1.1.
    Me disais aussi que ca sortait bien de quelque part... Remarque que j'avais anticipé cette réponse . Et ils servent à quoi au juste ?

  20. #20
    Nouveau Candidat au Club
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    salut, Je débute sur struts et j'y connais rien du tout mais essaye peut etre d'ajouter le paramètre scope="session" dans ta balise <action ...> dans ton struts-config.xml.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2010, 16h23
  2. [MySQL] Après modification d'un nom, j'ai "Erreur 500 : Erreur interne du serveur"
    Par swampsnake dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/05/2009, 09h08
  3. Erreur de niveau après modif d'un RPG
    Par gege91 dans le forum AS/400
    Réponses: 6
    Dernier message: 22/11/2008, 10h29
  4. message d'erreur après modification config MOCS 2007
    Par phoenix75 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 09/04/2008, 15h10
  5. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23

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