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 :

s:select en action


Sujet :

Struts 2 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Par défaut s:select en action
    Bonjour à tous !!

    Voila mon problème : j'ai dans ma page jsp un select, représenté par le taglib <s:select> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:select id="listeDroite" key="listeUsers" multiple="true" list="listeUsers" listValue="trigramme" ></s:select>
    Coté de mon action, j'ai l'attribut suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	private ArrayList<Utilisateur> listeUsers;
    la liste identifiée "listeDroite" est en fait la liste destination d'une double liste. Mon problème est le suivant, lorsque je submitte mon form, je ne récupère pas la liste des valeurs présentes dans ma liste de droite.

    J'ai bien dans l'idée au moment du submit de concatener la liste des valeurs pour le recupérer en String dans mon action, mais
    1- J'trouve pas ca très propre
    2- Ca risque de faire une sacrée chaîne de caractère s'il y a 20 users, voire même plus...

    Quelqu'un a-t-il donc déjà eu à passer le contenu d'un s:select dans l'action ?

    Merci d'avance !

  2. #2
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    Avril 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Avril 2004
    Messages : 160
    Par défaut
    J'ai pas tout compris,
    Dans ta page , tu as combien de liste?

    Premiere remarque, quand tu utilise une liste à chois multiple il faut que ta liste soit une liste d'objet String ( je pense).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Par défaut
    Salut bonano et merci de m'aider.

    J'ai une double liste :
    une première qui récupère une liste d'utilisateurs que j'ai en base, celle-là pas de problème
    Une deuxième, remplie par l'utilisateur en sélectionnant des valeurs dans la première liste.


    Sachant que coté action, j'ai une liste prévue pour mon premier select, et une autre pour mon autre select.

    En ce qui concerne ta remarque, je m'étais déjà penché la dessus, mais ca ne marche pas plus. Après est ce qu'il s'attend à avoir des identifiants d'option ?

    Je vais voir ca.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Par défaut
    Arf bon j'ai essayé de mettre mon attribut typé String [], Utilisateur[], rien ne marche, je ne récupère pas ma liste d'utilisateurs sélectionnés.

    Je vais finir par mettre ma liste ds un input hidden sous forme de chaine de caracteres concaténée, et la traiter dans l'action

    Je continue quand meme les investigations, si qqn a encore une idée, ou persiste et signe sur l'idée du String[], je suis preneur !

    Merci d'avance !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Par défaut
    Bon j'ai l'impression d'avoir saisi ce qui lui manquait : ca serait tout simplement que je ne sélectionnait aucune valeur dans ma liste de droite. Je pensais qu'il envoyait la liste, et non la liste sélectionnée.

    Je tiens au courant,

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Par défaut
    Bon deja c'est bien un probleme résolu, il faut bien sélectionner les valeurs dans la liste avant de l'nevoyer (a faire en js )

    Maintenant j'arrive bien ds le setter de ma liste coté action, mais en mode debug, au lieu de ma liste remplis de mes objets Utilisateur, elle est remplie de "ognl.NoConversionPossible"

    Au niveau du code voila ou j en suis :
    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
    	private List<Utilisateur> listSelectedUtilisateurs;
     
    	/**
             * @param listeDeveloppeurs :
             *            la liste des développeurs
             */
    	public void setListeDeveloppeurs(ArrayList<Utilisateur> listeDeveloppeurs) {
    		this.listeDeveloppeurs = listeDeveloppeurs;
    	}
     
    	/**
             * @return La liste des utilisateurs sélectionnés.
             */
    	public List getListSelectedUtilisateurs() {
    		return listSelectedUtilisateurs;
    	}
    La je suis un peu paumé dans les types...

  7. #7
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut
    Hi Burhud
    Est-ce que tu as réussi à résoudre ton problème de select multiple, car je rencontre le même ?
    Si oui, peux-tu m'indiquer ta solution ?
    Merci

  8. #8
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut
    Hi Burhud
    Est-ce que tu as réussi à résoudre ton problème de select multiple, car je rencontre le même ?
    Si oui, peux-tu m'indiquer ta solution ?
    Merci
    Finalement, je viens de trouver. Effectivement, il faut sélectionner tous les champs du 2nd select au moment du submit (via un code js), sinon ils ne sont pas envoyés à l'action.
    Mais, au niveau de l'action, on récupère les champs sélectionnés sous forme de "String[] name_du_2nd_select" et non sous forme de List<Object>.
    C'est ensuite au niveau de l'action (soit dans le setter, soit dans la méthode execute) que tu peux convertir ton String[] en List<Object>.

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Par défaut Double liste Struts2
    [QUOTE=burhud;2625552]Bonjour à tous !!

    Voila mon problème : j'ai dans ma page jsp un select, représenté par le taglib <s:select> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:select id="listeDroite" key="listeUsers" multiple="true" list="listeUsers" listValue="trigramme" ></s:select>
    Coté de mon action, j'ai l'attribut suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	private ArrayList<Utilisateur> listeUsers;
    Bonjour, burhud; ça fait un bail votre question mais j'y reviens parce que j'ai problème similaire.
    J'ai une liste de catégorie de produit qui viennent en base de donne et une deuxieme qui sera remplie par la premiere liste quant l'utilisateur fait un choix de catégorie. Cette deuxieme liste aussi doit venir de la base de donné en se référent de la catégorie cad tous les produits du catégorie.
    Est ce que vous pouver me donnez une solution. Et si kelkun a une idée je suis preneur Merci.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 129
    Par défaut
    Je suis confronté à la même problématique.

    Pourrions nous avoir la solution à cette dernière ?

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Bonjour,
    Avez vous pensé à utiliser le tag
    <s:optiontransferselect />
    Il me semble que celui-ci repond parfaitement à votre problématique.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 129
    Par défaut
    On va tester ça, merci !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Par défaut
    Citation Envoyé par M€lK!oR Voir le message
    Je suis confronté à la même problématique.

    Pourrions nous avoir la solution à cette dernière ?

    <s:optiontransferselect
    label="Favourite Cartoons Characters"
    name="leftSideCartoonCharacters"
    list="{'Popeye', 'He-Man', 'Spiderman'}"
    doubleName="rightSideCartoonCharacters"
    doubleList="{'Superman', 'Mickey Mouse', 'Donald Duck'}"
    />



    Il faudrait que la liste de droite réagisse à ce qui est sélectionné dans la liste de gauche, j'ai essayé en javascript mais s'il y a meilleure solution, je suis preneur!

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Slt,

    Qu'est ce que t'entends par
    j'ai essayé en javascript mais s'il y a meilleure solution, je suis preneur!
    Tu as essayé quoi au juste ?

    Si j'ai bien compris la problématique, le but c'est de selectionner des utilisateurs dans une première liste et de récupérer le résultat dans une deuxième liste.
    Et à mon avis le tag <s:optiontransferselect > est le mieux adapter pour ce genre de problématique.


    Je vous en pris



    --

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Par défaut
    J'ai essayé une fonction Java Script qui prend en paramètre la valeur de la première liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	<s:select  list="clients" id="clientSelectionne"
                   name="clientSelectionne"  onchange="jsFunction(this.value)" />
    et qui lance une méthode de mon action correspondante.
    (ps: ça galère encore un peu.. )

    Avec <s:optiontransferselect > , je n'ai pas trouvé d'exemple où la deuxième liste dépendait de la première...

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    Slt,

    Je n'ai pas trop compris pouquoi tu veux absolument faire dépendre ta deuxième liste avec la première.
    Lors de l'initialisation de ta JSP il faudrait lister tous tes utilisateurs dans la première liste et laisser la deuxième liste à vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    doubleList="{}"
    ou
    doubleList=maListeResultante
    maListeResultante est la liste que t'aurais déclaré dans ta classe XXXaction.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListeResultante = new ArrayList<String>()
    non??



    Je t'en pris



    --

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 129
    Par défaut
    Saziley, si tu peux m'éclairer ça m'aiderai !

    J'essaie d'utiliser ce composant et il se trouve qu'il fonctionne à merveille sauf que à la soumission de mon formulaire, je ne récupère pas la liste bindé à ma "doubleList". On dirai qu'il l'a réinitialise avant !

    Une idée ? (A savoir que ma classe Action est en scope prototype)

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    M€lK!oR,

    Poste moi ta classe action et la jsp associée, je vais voir ce que je peux faire.


    Je t'en pris



    --

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 129
    Par défaut
    La 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
    72
    73
    74
    75
    76
    77
    78
    79
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ taglib prefix="securite" uri="http://www.springframework.org/security/tags"%>
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    
    
    <s:div cssClass="right" >
    	<span class="action"><a href="<s:url action="accueil"/>"><s:text name="btn_back"/></a></span>
    </s:div>
    
    <s:div cssClass="blocCaracteristique2" id="ajoutDeComposant">
    <s:if test="modify">
    	<s:div cssClass="nom" ><s:text name="stitle_utilisateur_modify"/></s:div>
    </s:if><s:else>
    	<s:div cssClass="nom"><s:text name="stitle_utilisateur_create"/></s:div>
    </s:else>
    	<s:actionerror cssClass="actionError" />
    	<s:form action="user" method="POST" id="form"  >
    	<s:div cssClass="ficheCaracteristique">
    		<s:hidden name="modify"/>
             <span class="form_label"><s:text name="lbl_utilisateur_login"/></span>
             <s:textfield  name="newUser.login" cssClass="taille200" readonly="%{modify}"/>
    	     <span class="form_label"><s:text name="lbl_utilisateur_password"/></span> 
    	     <s:textfield name="password" cssClass="taille200" />
    	     <s:hidden name="newUser.password"/>
             <span class="form_label"><s:text name="lbl_utilisateur_mail"/></span> 
             <s:textfield name="newUser.mail" cssClass="taille200" />
             <span class="form_label"><s:text name="lbl_utilisateur_droit"/></span> 
           
            <s:div cssStyle="float:left">
          		<s:checkboxlist cssClass="taille200" listKey="libelle" list="droits" listValue="libelle" id="chb_list" 
                   name="droitsSelectionnes" cssStyle="vertical" />
           </s:div>
         </s:div>
         <s:div cssClass="blocDroit" cssStyle="padding-left:40px">
          	<span class="form_label"><s:text name="lbl_utilisateur_client"/></span>
          	
       
         <s:optiontransferselect       name="clients"
          formName="form"
          leftTitle="Clients existants"
          rightTitle="Clients selectionnés"
          multiple="true"
          list="clients"
          emptyOption="true"
          allowAddAllToLeft="false"
          allowAddToLeft="false"
          allowUpDownOnLeft="false"
          allowUpDownOnRight="false"
          allowSelectAll="false"
          doubleListKey="nom"
          doubleListValue="nom"
          listKey="nom"
          listValue="nom"
          doubleName="clientsSelectionnes"
          doubleList="clientsSelectionnes" />
         </s:div>
         	<s:actionmessage cssClass="actionMessage" cssStyle="clear:both" />
    
     
          <s:div cssStyle="clear:both" disabled="true">
    	      <s:if test="modify">
    		        <s:div cssClass="right">
    		       	 	<span class="action"><s:submit type="button" method="update"><s:param name="value"><s:text name="btn_update"/></s:param></s:submit></span>
    				</s:div>
    	      </s:if>
    	      <s:else>
    		        <s:div cssClass="right">
    		      	  <span class="action"><s:submit type="button" method="save"><s:param name="value"><s:text name="btn_create"/></s:param></s:submit></span>
    				</s:div>
    		</s:else>
    	</s:div>
    	</s:form>
    	<s:div cssStyle="float:right">
    		<s:div cssClass="right">
    			 <span class="action"><a href="<s:url action="user_raz"/>"><s:text name="btn_raz"/></a></span>
    		</s:div>
    	</s:div>
    	</s:div>
    La classe action

    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
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    package presentation.actions.utilisateur;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import presentation.actions.SoAbstractAction;
    import presentation.exceptions.PresentationException;
    import presentation.utils.PropertiesUtils;
    import service.ClientService;
    import service.UtilisateurService;
    import service.exceptions.ServiceException;
     
    import com.opensymphony.xwork2.ActionContext;
     
    import domaine.models.Client;
    import domaine.models.Droit;
    import domaine.models.Utilisateur;
    /**
     * Action Utilisateur
     * @author ldussart
     *
     */
    @SuppressWarnings("serial")
    public class UtilisateurAction extends SoAbstractAction{
     
    	private UtilisateurService serviceUtilisateur;
    	private ClientService serviceClient;
    	private boolean t_erreur = false;
    	/**
             * Utilisateur pour le formulaire de creation
             */
    	private Utilisateur newUser;
    	private List<String> droitsSelectionnes;
    	private List<String> clientsSelectionnes;
    	private String password;
     
    	/**
             * Liste des droits pour la liste déroulante
             */
    	private List<Droit> droits;
    	/**
             * Listes des utilisateurs
             */
    	private List<Utilisateur> utilisateurs;
    	/**
             * Clients a assigner à l'utilisateur
             */
    	private List<Client> clients;
     
    	/**
             * Boolean qui permet d'affichier ou non les libellés et bouton de modification 
             */
    	private boolean modify;
     
     
    	/**
             * Constructeur permettant l'instantiation avec spring
             * @param p_service l'UtilisateurService
             */
    	public UtilisateurAction(UtilisateurService p_service, ClientService p_service_c){
    		this.serviceUtilisateur = p_service;
    		this.serviceClient = p_service_c;
    	}
     
     
    	/**
             * Preparation des données utilisateur
             */
    	@Override
    	public void prepare() throws Exception {
    		clearMessages();
    		newUser = new Utilisateur();
    		droitsSelectionnes = new ArrayList<String>();
    		clientsSelectionnes = new ArrayList<String>();
    		modify=false;
     
    		droits = serviceUtilisateur.getAllDroits();
    		utilisateurs = serviceUtilisateur.getAllUtilisateurs();
    		clients = serviceClient.getAllClients();
     
    	}
     
    	/**
             * Sauvegarde de l'utilisateur
             * @return success
             */
    	public String save(){
    		try {
    			t_erreur = validateur();
     
    			if(!t_erreur){
    				serviceUtilisateur.createUser(newUser.getLogin(), password,newUser.getMail(), droitsSelectionnes);
    				for(String t_s : clientsSelectionnes){
    					serviceUtilisateur.addClientToUtilisateur(newUser.getLogin(), t_s);
    				}
     
     
    				addActionMessage(PropertiesUtils.getProperties("msg_conf_utilisateur_userCreated"));
    				razFields();
    				//on recupere les nouvelles données
    				utilisateurs = serviceUtilisateur.getAllUtilisateurs();
     
    				return SUCCESS;
    			}
     
     
    		} catch (ServiceException e) {
     
    			addActionError(PropertiesUtils.getPropertiesFromException(e.getMessage()));
    			e.printStackTrace();
     
     
    		}
    		return SUCCESS;
     
    	}
     
     
    	/**
             * Valide les champs du formulaire
             * @return true si tout les champs saisis sont incorrects, false sinon
             */
    	private boolean validateur(){
    		boolean t_error = false;
     
     
    		if(newUser.getLogin().isEmpty()){
    			t_error = true;
    			addActionError(PropertiesUtils.getProperties("msg_err_utilisateur_login"));
    		}
    		if(password.isEmpty()){
    			t_error = true;
    			addActionError(PropertiesUtils.getProperties("msg_err_utilisateur_password"));
    		}else if(password.length() < 6){
    			t_error = true;
    			addActionError(PropertiesUtils.getProperties("msg_err_utilisateur_passwordLength"));
    		}
    		if(newUser.getMail().isEmpty()){
    			t_error = true;
    			addActionError(PropertiesUtils.getProperties("msg_err_utilisateur_mail"));
    		}
    		if(droitsSelectionnes.isEmpty()){
    			t_error = true;
    			addActionError(PropertiesUtils.getProperties("msg_err_utilisateur_droit"));
    		}
     
     
    		return t_error;
     
    	}
     
    	/**
             * Mise à jour d'un utilisateur en base de données
             * @return success
             */
    	public String update() throws PresentationException{
     
    		try {
     
    			t_erreur = validateur();
     
    			if(!t_erreur){
    				if(!getPassword().contains("*")){
    					newUser.setPassword(password);
    				}
    				if(newUser.getLogin()==null || newUser.getMail()==null  || droitsSelectionnes==null  || newUser.getPassword()==null )
    					throw new PresentationException("newUser has a null attribute");
    				serviceUtilisateur.updateUser(newUser.getLogin(), newUser.getPassword(),newUser.getMail(), droitsSelectionnes);
    				//Mise a jour des clients de l'utilisateur
    				updateCustomerList();
     
     
    				addActionMessage(PropertiesUtils.getProperties("msg_conf_utilisateur_userModified"));
    				razFields();
    				//on recupere les nouvelles données
    				utilisateurs = serviceUtilisateur.getAllUtilisateurs();
     
    				return SUCCESS;
    			}
     
     
    		} catch (ServiceException e) {
     
    			addActionError(PropertiesUtils.getPropertiesFromException(e.getMessage()));
     
    			e.printStackTrace();
    		}
     
    		return SUCCESS;
    	}
     
    	/**
             * Mise a jour des clients de l'utilisateur
             */
    	private void updateCustomerList(){
    		//remplissage de la liste des nouveaux clients
    		ArrayList<Client> t_clients = new ArrayList<Client>();
    		for(String t_s : clientsSelectionnes){
    			for(Client t_c : clients){
    				if(t_c.getNom().equalsIgnoreCase(t_s)){
    					t_clients.add(t_c);
    				}
    			}
    		}
    		Utilisateur t_u = null;
    		try {
    			 t_u = serviceUtilisateur.getUtilisateur(newUser.getLogin());
    		} catch (ServiceException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
    		//ajout
    		for(Client t_s : t_clients ){
    			if(!t_u.getClients().contains(t_s)){
    				try {
    					serviceUtilisateur.addClientToUtilisateur(t_u.getLogin(), t_s.getNom());
    				} catch (ServiceException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
     
    			}
    		}
    		//suppression
    		for(Client t_s : t_u.getClients()){
    			if(!t_clients.contains(t_s)){
    				try {
    					serviceUtilisateur.removeClientToUtilisateur(t_u.getLogin(), t_s.getNom());
    				} catch (ServiceException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
     
    	}
     
     
    	/**
             * Remise a zero des champs
             * @return success
             */
    	public String raz(){
    		razFields();
     
    		return SUCCESS;
    	}
     
    	private void razFields(){
    		modify = false;
    		newUser = new Utilisateur();
    		password = "";
     
    		droitsSelectionnes.clear();
    		clientsSelectionnes.clear();
    	}
     
     
    	/**
             * Suppression d'un utilisateur
             * @return Success
             */
    	public String delete(){
    		String[] c = (String[])ActionContext.getContext().getParameters().get("id");
    		//System.out.println("ici"+c[0]);
     
    		try 
    		{
    			serviceUtilisateur.removeUser(c[0]);
    			//on recupere les nouvelles données
    			utilisateurs = serviceUtilisateur.getAllUtilisateurs();
    		} catch (ServiceException e) {
    			addActionError(PropertiesUtils.getPropertiesFromException(e.getMessage()));
     
    			e.printStackTrace();
    		}
     
    		return SUCCESS;
    	}
     
    	/**
             * Assignation des champs pour la modification
             * @return
             */
    	public String modify(){
    		modify=true;
    		//on recupere la variable en parametre
    		String[] t_log = (String[]) ActionContext.getContext().getParameters().get("id");
    		String t_login = t_log[0];
    		//on recupere le bon utilisateur dans la liste
    		for(Utilisateur t_u : utilisateurs){
    			if(t_u.getLogin().equalsIgnoreCase(t_login)){
    				//assignation des champs du formulaire
    				newUser = t_u;
    				password = "***********";
    				//session.put("passwordNotCrypted", t_u.getPassword());
    				//newUser.setPassword("***********");
    				//Mise a jour des droits.
    				droitsSelectionnes.clear();
     
    				for(Droit t_d : newUser.getDroits()){
    					droitsSelectionnes.add(t_d.getLibelle());
    				}
    				clientsSelectionnes.clear();
    				for(Client t_c : newUser.getClients() ){
    					clientsSelectionnes.add(t_c.getNom());
    				}
     
    			}
    		}
     
    		return SUCCESS;
    	}
     
    	public void setDroits(List<Droit> droits) {
    		this.droits = droits;
    	}
     
     
    	public List<Droit> getDroits() {
    		return droits;
    	}
     
     
     
    	public Utilisateur getNewUser() {
    		return newUser;
    	}
     
    	public void setNewUser(Utilisateur newUser) {
    		this.newUser = newUser;
    	}
     
    	public List<Utilisateur> getUtilisateurs() {
    		return utilisateurs;
    	}
     
    	public void setUtilisateurs(List<Utilisateur> utilisateurs) {
    		this.utilisateurs = utilisateurs;
    	}
     
    	public List<String> getDroitsSelectionnes() {
    		return droitsSelectionnes;
    	}
     
    	public void setDroitsSelectionnes(List<String> droitsSelectionnes) {
    		this.droitsSelectionnes = droitsSelectionnes;
    	}
     
     
    	public boolean isModify() {
    		return modify;
    	}
     
    	public void setModify(boolean modify) {
    		this.modify = modify;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
     
    	public List<Client> getClients() {
    		return clients;
    	}
     
     
    	public void setClients(List<Client> clients) {
    		this.clients = clients;
    	}
     
     
    	public List<String> getClientsSelectionnes() {
    		return clientsSelectionnes;
    	}
     
     
    	public void setClientsSelectionnes(List<String> clientsSelectionnes) {
    		this.clientsSelectionnes = clientsSelectionnes;
    	}
     
     
    }
    Voilà !

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    M€lK!oR,

    Je suis entrain de regarder ton code.
    Avant toute chose sache que la méthode prépare qui est présente dans ta classe sert comme tu le sais à préparer les données avant chaque action.

    Mais elle est aussi appelé après chaque action: c'est à dire lors du soumission de ton formulaire par exemple, ce qui explique la réinitialisation de tes listes.

    Essaye de mettre des conditions dans ta methode prepare() du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (clientsSelectionnes ==null){
    droitsSelectionnes = new ArrayList<String>();
    clientsSelectionnes = new ArrayList<String>();
    }
    Cela t'éviteras de réinitialiser tes listes lors du deuxième passage dans la méthode.

    Je poursuis l'examination de ton code...
    Sinon est ce que la liste des clients s'affichent bien dans la selection de gauche ?

    ++

    --

Discussions similaires

  1. Via select : changer action d'un form puis submit + smartphone
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2013, 13h53
  2. 2 actions sur evenement onchange sur champ Select
    Par falz222 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2006, 20h59
  3. Envoi d'une action après click dans un select
    Par sutailga dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/06/2006, 20h29
  4. chargement de photos sur action d'un <select>
    Par bibile dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 20/12/2005, 19h04
  5. [JList] detecter la selection + action
    Par mzt.insat dans le forum Composants
    Réponses: 8
    Dernier message: 08/12/2005, 22h23

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