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> récupérer les lignes sélectionnés


Sujet :

Struts 2 Java

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut <s:select> récupérer les lignes sélectionnés
    Bonjour,

    Je suis bloqué sur un problème de select, je voudrais récupérer en Java, la liste des lignes de mon select sélectionné et je n'arrive pas à mapper le tout. Pourtant j'ai bien vu des posts à ce sujet et je pense avoir bien suivi. Voici mon code dans ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <s:select 	SIZE="5" name="materielTous" headerKey="1" multiple="true"
    size = "4" list="listMateriel" listKey="idMaterielTous" />
    Et voici mon Java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     private List materielTous;
    public List getMaterielTous() 
    {
           return materielTous;
    } 
    public void setMaterielTous(List materielTous) 
    {
         this.materielTous= materielTous;
    }
    Lorsque je fais un getMaterielTous, comme ceci (dans ma fonction correspondant à un click sur un bouton):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List materielSelectionne = getMaterielTous();
    , je me mets en debug et je vois que materielSelectionne = null.

    Ce qu'il faut savoir est que la liste que j'affiche "listMateriel" n'est pas une liste de String mais une liste d'objets "Materiel", est-ce que cela pose un problème?
    Dois-je initialiser quelquechose dans le prepare()? J'ai essayé de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private List materielTous=new ArrayList();
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List materielTous;
    , cela me donne bien un objet materielSelectionne non null mais bien entendu il est vide. Comment dois-je faire le mapping? Est-ce qu'il faut déclarer quelquechose dans le struts.xml?
    Merci beaucoup

  2. #2
    Membre confirmé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 354
    Points : 497
    Points
    497
    Billets dans le blog
    1
    Par défaut
    Tu as bien dis récupérer dans java, et non injecter dans la jsp les valeurs initialisé dans java, sous entendu c'est a partir de la jsp que tu reçois des valeur pour peupler ta list.
    Et ta List devrait être paramétré List<toto> totos, ensuite ta List n'as jamais été peuplé, donc comment récupérer ses valeurs si il n'y a rien dedans, pour la remplir ça se fait dans ton List<Truc> getListTesTrucs() avec un objet membre d'instance déclaré comme ça par exemple : private List<Truc> tesTrucs=new ArrayList<Truc>();
    Et pour jouer de traitements sur les valeurs récupérés faut manipuler dans une méthode de ta classe d'action comme dans le code qui suit qui test la valeur identifiant et motdepasse dans la méthode ajouter.
    struts.xml
    Code xml : 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
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
      <constant name="struts.enable.DynamicMethodInvocation" value="false" />
      <constant name="struts.devMode" value="true" />
     
      <package name="exemple08" namespace="/" extends="struts-default">
        <default-action-ref name="Ajouter_Client" />
     
        <action
          name="Ajouter_Client"
          class="exemple08.ClientAction">
          <result>/jsp/AjouterClient.jsp</result>
        </action>
     
        <action
          name="ValiderAjouter_Client"
          class="exemple08.ClientAction"
          method="ajouter">
          <result name="input">/jsp/AjouterClient.jsp</result>
          <result name="success">/jsp/AfficherClient.jsp</result>
        </action>
     
      </package>
    </struts>


    ClientAction.java
    Code java : 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
    package exemple08;
     
    import com.opensymphony.xwork2.ActionSupport;
     
     
    @SuppressWarnings("serial")
    public class ClientAction extends ActionSupport {
     
      private String identifiant;
      private String motdepasse;
      public ClientAction() {
      }
     
      public String getIdentifiant() {
        return identifiant;
      }
     
      public void setIdentifiant(String identifiant) {
        this.identifiant = identifiant;
      }
     
      public String getMotdepasse() {
        return motdepasse;
      }
     
      public void setMotdepasse(String motdepasse) {
        this.motdepasse = motdepasse;
      }
     
      // ajouter les informations du client dans la session
      public String ajouter() {
        // vérifier les saisies, en cas d'erreur
        // retourner sur la page de saisie
        if (this.identifiant.equals("")
                || this.motdepasse.equals("")) {
          return "input";
        } // pas d'erreur
        else {
          // message dynamique présent
          // dans le fichier de propriétés
          this.message = getText("client.accueil");
          return SUCCESS;
        }
      }
    }

    AjouterClient.jsp
    Code jsp : 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
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
      <head>
        <title><s:property value="%{getText('client.ajouter')}"/></title>
        <style type="text/css">@import url(css/styles.css);</style>
      </head>
      <body>
        <div id="enveloppe">
          <br/>
          <h3><s:property
              value="%{getText('client.ajouter')}"/></h3>
            <s:form
              method="post"
              action="ValiderAjouter_Client">
              <s:textfield
                name="identifiant"
                id="identifiant"
                label="%{getText('client.identifiant')}"
                labelposition="top"
                cssClass="input"/>
              <s:textfield
                name="motdepasse"
                label="%{getText('client.motdepasse')}"
                labelposition="top"
                cssClass="input"/>
              <s:submit value="%{getText('client.ajouter')}"/>
            </s:form>
        </div>
      </body>
    </html>


    dans java les valeurs saisies dans la jsp sont visible dans la méthode(ajouter()) qui est indiquer dans ta déclaration d'action dans struts.xml, j'ai mis le code pour pas trop rentrer dans de longues explications qui ne pourrait mieux t'expliquer que des livres présent dans le commerce.
    En esperant que cela t'aide a comprendre. Regarde ici ya des petites info intéressante.
    Je pense aussi que suivre les questions des forum ne te fera pas comprendre des concepts, juste au mieux éclaircir des points qui t'ont paru trouble et choper des petits trucs

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    Je te remercie pour l'exemple mais j'ai vraiment l'impression de faire pareil.
    Regarde ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<s:url action="addMaterielToSalle"/>">
    Mon struts.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <action name="addMaterielToSalle" method="addMaterielToSalle"
    			class="administration.AjoutSalle">
    			<result name="input">AjoutSalle.jsp</result>
    			<result name="success">/administration/salle/AjoutSalle.jsp</result>
    			<result>/administration/salle/AjoutSalle.jsp</result>
    		</action>
    Et enfin ma classe AjoutSalle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public String addMaterielToSalle(){
    		List materielSelectionne = getMaterielTous();
    Et c'est mon objet materielSelectionne qui est null.

    Qu'est-ce que t'en penses? Tu vois un problème quelquepart?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Points : 36
    Points
    36
    Par défaut
    je crois que le problème viens de la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<s:url action="addMaterielToSalle"/>">
    c'est un lien, ce qui veut dire que tu change de page et que le données sont perdu. A la place tu devrai mettre un bouton submit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:submit action="tonaction">
    la les données seront posté et bien récupérées par ton action

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Points : 76
    Points
    76
    Par défaut
    Merci.

    Je pense que c'est effectivement ça le problème. Je vais le modifier.

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

Discussions similaires

  1. <s:select /> - Récupérer les éléments sélectionnés
    Par leblanc.philippe dans le forum Struts 2
    Réponses: 3
    Dernier message: 20/01/2009, 18h47
  2. Réponses: 1
    Dernier message: 07/06/2006, 19h56
  3. Récupérer la ligne sélectionnée dans un ListBox
    Par jmjmjm dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/11/2005, 23h13
  4. Requete select pour récupérer les no match entre 2 tables
    Par Celina dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/12/2003, 12h59
  5. Réponses: 2
    Dernier message: 13/11/2003, 16h13

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