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 :

Iterator : comment afficher elements d'une liste definit dans une classe Action


Sujet :

Struts 2 Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut Iterator : comment afficher elements d'une liste definit dans une classe Action
    Bonjour,

    Alors je viens de me mettre a struts 2 et j'ai du mal a recuperer les elements d'une liste que je cree et remplit dans une classe qui represente l'Action.

    Plus clairement, je dispose d'une page index.jsp qui propose, a travers un bouton, une action nomme "select".

    Le but est d'appeler a travers cette action (je definit tout ceci dans le fichier struts.xml) une classe Select.java qui va executer une requete de type SELECT sur ma table et remplir une liste avec les resultats du SELECT.

    Seulement voila, je remplis ma liste etc.. MAIS je n'arrive pas a afficher ces elements de ma liste dans une page de destination nomme selectSuccessful.jsp.

    Je pense qu'il faut que je fasse un <s:iterator dans ma page de destination ou je veux afficher les elements de ma liste en affichant ca sous forme de tableau.

    Seulement voila, dans struts 1 je faisais un setAttribute sur une session dans ma classe action et je recuperais ca dans ma page avec un tag bean style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <logic:iterate id="customer" name="ClientCustomers">
                    <tr class="ligneTableau">
                            <td><bean:write name="customer" property="nom" /></td>
                            <td><bean:write name="customer" property="ville" /></td>
                    </tr>
    </logic:iterate>
    Mais en struts 2 comment faire pour realiser quelque chose dans le meme style ?

    Merci de m'aider

    Andrew
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Bonjour !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:iterate id="customer" name="ClientCustomers">
                    <tr class="ligneTableau">
                            <td><bean:write name="customer" property="nom" /></td>
                            <td><bean:write name="customer" property="ville" /></td>
                    </tr>
    </logic:iterate>
    L'équivalent de ton morceau de code en struts 2 donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <s:iterator value="ClientCustomers">
                    <tr class="ligneTableau">
                            <td><s:property value="nom" /></td>
                            <td><s:property value="ville" /></td>
                    </tr>
    </s:iterator>
    J'espère avoir bien répondu à ta question.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Ben enfait c'est justement ce que j'avais essaye, avant de demander de l'aide et ca n'affichait rien.

    Je suis desole j'ai oublie de le precise aue j'avais essayer ca.

    Voici pour illustrer :

    Select.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
     
    package jim.test;
     
    import com.opensymphony.xwork2.ActionSupport;
    import java.sql.*;
    import java.util.ArrayList;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts2.interceptor.ServletRequestAware;
     
     
    /**
     * <p> Validate a user login. </p>
     */
    public  class Select extends ActionSupport implements ServletRequestAware {
     
        private String username = null;
        private String city = null;
        private ArrayList customerList = new ArrayList();
        private HttpServletRequest request;
     
        @Override
        public void setServletRequest(HttpServletRequest httpServletRequest) {
            this.request = httpServletRequest;
        }
     
     
        public String getUsername() {
            return this.username;
        }
     
        public void setUsername(String value) {
            this.username = value;
        }
     
        public String getCity() {
            return this.city;
        }
     
        public void setCity(String value) {
            this.city = value;
        }
     
        @Override
        public String execute() throws Exception {
            String url = "jdbc:mysql://kipper.mech.port.ac.uk/";
            String dbName = "sumstest2";
            String driverName = "org.gjt.mm.mysql.Driver";
            String userName = "sumstest";
            String password = "sumstest";
            Connection con=null;
            Statement stmt=null;
            ResultSet rs=null;
     
            try{
                Class.forName(driverName).newInstance();
                con=DriverManager.getConnection(url+dbName, userName, password);
                stmt=con.createStatement();
            }catch(Exception e){
                System.out.println(e.getMessage());
            }
     
            stmt = con.createStatement();
            rs = stmt.executeQuery("SELECT * FROM CLIENT ORDER BY nom");
     
            while (rs.next()) {
                customerList.add(new Client(rs.getString(2), rs.getString(3)));
            }
     
            if(customerList  != null){
                request.setAttribute("ClientCustomers" , customerList);
            }
     
     
            if(rs == null){
                rs.close();
                return ERROR;
            }else{
                rs.close();
                return SUCCESS;
            }
        }
    }
    selectSuccessful.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
     
    <%-- 
        Document   : selectSuccess
        Created on : 18-Apr-2008, 11:41:32
        Author     : BreyA
    --%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h2>List of clients</h2>
     
            <table border="1" align="center">
                <thead>
                    <tr>
                        <th>User name</th>
                        <th>User city</th>
                    </tr>
                </thead>
                <tbody>
                    <s:iterator value="ClientCustomers">
                        <tr>
                            <td><s:property value="nom" /></td>
                            <td><s:property value="ville" /></td>      
                        </tr>
                    </s:iterator>
                </tbody>
            </table>
     
     
        </body>
    </html>
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    struts.xml contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <action name="select" class="jim.test.Select">
                <result name="error">index.jsp</result>
                <result>selectSuccess.jsp</result>
    </action>
    Et avec ceci, ca m'affiche un tableau vide

    Apres peut-etre que l'erreur vient de ma classe Select.java, notamment avec le setAttribute que me fait douter.
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Ca ne risque pas de marcher...
    En fait, tu peux récupérer ta liste de deux facons :

    1. En ajoutant un getter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public List getCustomerList() {
      return customerList;
    }
    2. En implémentant SessionAware

    Par contre, PAS de code de DAO dans les actions.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    La solution du getter me semble vraiment idéale.

    Je vais essayer et je vous tiens au courant, merci
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    J'ai essaye et ca marche nikel, merci beaucoup pour la solution !

    A bientot !
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    J'ai essaye et ca marche nikel, merci beaucoup pour la solution !

    A bientot !
    Ok, mais laquelle (ça peut aider les autres aussi) ?

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    La solution du getter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public List getCustomerList() {
      return customerList;
    }
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  10. #10
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai un soucis à peu près dans la mm logique!!
    Seulement j'utilise hibernate!!!
    Voici le problem ke j'ai:
    je veux afficher la liste des utilisateurs, dans ma classe d'action j'ai une methode pluto 2 car doivent retourner normalment le mm resultat sinon dites moi c k g doi changer car g bloquer la dessus:

    // Cette méthode permet récupèrer la liste des users
    public List<User> getAllUsers() {

    return dao.getAllUsers();

    }
    // test userservice est le bean metier
    public List<User> AfficherUser(){

    List<User> listuser = userservice.getAllUsers();
    return listuser;
    }

    et dans ma jsp:j'ai fait comme pr vs
    Suivant mon cas keske je dois mettre ds value pr que m'affiche quelque chose

    <s:iterator value="">

    Je vous remercie d m'aider !!!!!!!!!!!!

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


    <head>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
    </head>
    <body>
    <h2>Liste des utilisateurs</h2>

    <table border="1" align="center">
    <thead>
    <tr>
    <th>User nom</th>
    <th>User prenom</th>
    </tr>
    </thead>
    <tbody>
    <s:iterator value="">
    <tr>
    <td><s:property value="nom" /></td>
    <td><s:property value="prenom" /></td>
    </tr>
    </s:iterator>
    </tbody>
    </table>


    </body>
    </html>

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Points : 128
    Points
    128
    Par défaut
    Slt,
    Avant tout essaie d'utiliser les balises codes quand tu postes du code
    Sinon
    1) Tu dois avoir une liste dans ta classe action avec les getters/setters
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<User> listeAffichable;//+getter et setter
    2) Faire appel à ton service pour l'alimenter à l'initialisation de ta page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeAffichable = afficherListUser();
    3)
    Dans ta jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:iterator value="listeAffichable">

    ++

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  2. Recherche des données dans une BD ou dans une List
    Par mesken dans le forum Hibernate
    Réponses: 3
    Dernier message: 15/05/2011, 16h45
  3. [AJAX] liste liée a une liste liée a une liste
    Par dirty_harry dans le forum AJAX
    Réponses: 2
    Dernier message: 03/07/2009, 11h18
  4. modifier une liste contenue dans une liste
    Par harris_macken dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 18/03/2008, 16h52
  5. acceder à une liste contenue dans une liste
    Par CPI_en_mousse dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 12/06/2007, 08h33

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