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

Servlets/JSP Java Discussion :

Récupérer les attributs d'une instance dans une JSP


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut Récupérer les attributs d'une instance dans une JSP
    Bonjour,

    J'essaie d'afficher une tableau via une .jsp, contenant une liste de clients qui se trouve dans une bdd mysql.

    le problème est que le code html est vierge de toutes données comme vous pouvez le voir dans ce code source html créé par la page "liste_clients.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
    <h2>LISTE DES CLIENTS</h2>
     
    <div>
    	<table>
    		<tr>
    			<th><a href="ListeCommandeServlet/nom">NOM</a></th>
    			<th><a href="ListeCommandeServlet/prenom">PRENOM</a></th>
    			<th>ADRESSE</th>
    			<th>ACTIONS</th>
    		</tr>
     
    			<tr>
    				<td></td>
    				<td></td>
    				<td></td>
    				<td>
    					<form action="ListeCommendeServlet" method="post">
    						<input type="hidden" name="id" value=""/>
    						<input type="hidden" name="action" value="editer"/>
    						<input type="submit" value="EDITER"/>
    					</form>
    				</td>
    			</tr>
     
    			<tr>
    				<td></td>
    				<td></td>
    				<td></td>
    				<td>
    					<form action="ListeCommendeServlet" method="post">
    						<input type="hidden" name="id" value=""/>
    						<input type="hidden" name="action" value="editer"/>
    						<input type="submit" value="EDITER"/>
    					</form>
    				</td>
    			</tr>
     
    			<tr>
    				<td></td>
    				<td></td>
    				<td></td>
    				<td>
    					<form action="ListeCommendeServlet" method="post">
    						<input type="hidden" name="id" value=""/>
    						<input type="hidden" name="action" value="editer"/>
    						<input type="submit" value="EDITER"/>
    					</form>
    				</td>
    			</tr>
     
    			<tr>
    				<td></td>
    				<td></td>
    				<td></td>
    				<td>
    					<form action="ListeCommendeServlet" method="post">
    						<input type="hidden" name="id" value=""/>
    						<input type="hidden" name="action" value="editer"/>
    						<input type="submit" value="EDITER"/>
    					</form>
    				</td>
    			</tr>
     
    	</table>
    </div>
    Voici le code de ma page liste_clients.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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <!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=ISO-8859-1">
    <title>liste des clients</title>
    </head>
    <body>
    <h2>LISTE DES CLIENTS</h2>
     
    <div>
    	<table>
    		<tr>
    			<th><a href="ListeCommandeServlet/nom">NOM</a></th>
    			<th><a href="ListeCommandeServlet/prenom">PRENOM</a></th>
    			<th>ADRESSE</th>
    			<th>ACTIONS</th>
    		</tr>
    		<c:forEach items="${requestScope.clients}" var="c">
    			<tr>
    				<td><c:out value="${c.client_nom}"></c:out></td>
    				<td><c:out value="${c.client_prenom}"></c:out></td>
    				<td><c:out value="${c.client_adresse}"></c:out></td>
    				<td>
    					<form action="ListeCommendeServlet" method="post">
    						<input type="hidden" name="id" value="${c.client_id}"/>
    						<input type="hidden" name="action" value="editer"/>
    						<input type="submit" value="EDITER"/>
    					</form>
    				</td>
    			</tr>
    		</c:forEach>
    	</table>
    </div>
     
    </body>
    </html>
    On voit bien à la ligne 21 que j'utilise les expression language pour aller chercher un ArrayList qui se nomme clients et qui contient des instances du bean "Client".
    Cet arrayList est mis dans la request par la servlet comme ceci :
    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
    public class ListeCommandeServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
        private DAOclient daoclient;
     
        public ListeCommandeServlet() {super();}
     
    	public void init(ServletConfig config) throws ServletException {
    		super.init(config);
    		daoclient = (DAOclient)getServletContext().getAttribute("daoclient");
    	}
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("uri : " + request.getRequestURI());
    		String uri = request.getRequestURI();
     
    		String[] champs = uri.split("/");
     
    		String order = champs[champs.length - 1];
     
    		int choix = DAOclient.ORDERED_BY_DEFAULT;
     
    		switch(order) {
    		case "nom":
    			choix = DAOclient.ORDERED_BY_NOM;
    			break;
    		case "prenom":
    			choix = DAOclient.ORDERED_BY_PRENOM;
    			break;
    		}
     
    		request.setAttribute("clients", daoclient.findAll(choix));
    		getServletContext().getRequestDispatcher("/liste_clients.jsp").forward(request, response);
    	}
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	}
    }
    Nous voyons l'initialisation de la DAOclient à la ligne 10.
    on peut voir à la ligne 32 que je vais chercher un arrayList<Client> grâce à la méthode findAll() de l'instance daoclient.
    Voici la classe DAOclient :
    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
    public class DAOclient {
     
    	//DECLARATIONS
     
    	public static final int ORDERED_BY_DEFAULT = 0;
    	public static final int ORDERED_BY_NOM = 1;
    	public static final int ORDERED_BY_PRENOM = 2;
     
    	public static final String FIND_ALL_SQL = "select * from `client`";
    	public static final String FIND_ALL_ORDERED_NOM_SQL = "select * from `client` ORDER BY `nom`";
    	public static final String FIND_ALL_ORDERED_PRENOM_SQL = "select * from `client` ORDER BY `prenom`";
    	public static final String FIND_BY_ID_SQL = "select * from `client` where `id`=?";
    	public static final String UPDATE_ONE_SQL = "update `client` set `nom`=?, `prenom`=?, `adresse`=? where `id`=?";
    	public static final String INSERT_ONE_SQL = "insert into `client` (`nom`, `prenom`, `adresse`) values (?,?,?)";
     
    	private Connection base;
     
    	private java.sql.PreparedStatement findAllStatement;
    	private PreparedStatement findAllOrderedNomStatement;
    	private PreparedStatement findAllOrederedPrenomStatement;
    	private PreparedStatement findByIdStatement;
    	private PreparedStatement insertOneStatement;
    	private PreparedStatement updateOneStatement;
     
    	//CONSTRUCTEUR
    	public DAOclient(Connection base) {
    		this.base = base;
     
    		try {
    			findAllStatement = base.prepareStatement(FIND_ALL_SQL);
    			findAllOrderedNomStatement = base.prepareStatement(FIND_ALL_ORDERED_NOM_SQL);
    			findAllOrederedPrenomStatement = base.prepareStatement(FIND_ALL_ORDERED_PRENOM_SQL);
    			findByIdStatement = base.prepareStatement(FIND_BY_ID_SQL);
    			insertOneStatement = base.prepareStatement(INSERT_ONE_SQL);
    			updateOneStatement = base.prepareStatement(UPDATE_ONE_SQL);
    		} catch (SQLException e) {e.printStackTrace();}
    	}
     
    	//METHODES
    	private Client fetchRow(ResultSet rs) {
    		try {
    			return new Client(rs.getInt("client_id"),
    								rs.getString("client_nom"),
    								rs.getString("client_prenom"),
    								rs.getString("adresse"));
    		} 
    		catch (SQLException e) {e.printStackTrace();}
     
    		return null;
    	}
     
     
    	public List<Client> findAll(int orderType) {
    		System.out.println("entrée dans findAll method");
    		ArrayList<Client> clients = new ArrayList<Client>();
    		ResultSet rs = null;
     
    		PreparedStatement statement = findAllStatement;
    		try {
    			switch(orderType) {
    			case ORDERED_BY_DEFAULT:
    					findAllStatement.clearParameters();
    					statement = findAllStatement;
    				break;
    			case ORDERED_BY_NOM:
    				findAllOrderedNomStatement.clearParameters();
    				statement = findAllOrderedNomStatement;
    				break;
    			case ORDERED_BY_PRENOM:
    				findAllOrederedPrenomStatement.clearParameters();
    				statement = findAllOrederedPrenomStatement;
    				break;
    			}
     
    			rs = statement.executeQuery();
     
    			while(rs.next()) {
    				clients.add(fetchRow(rs));
    			}
    		} 
    		catch (SQLException e) {e.printStackTrace();}
    		finally {
    			if (rs != null) {
    				try {
    					rs.close();
    				} catch (SQLException e) {e.printStackTrace();}
    			}
    		}
    		return clients;
    	}
    }
    A la ligne 53, figure la méthode findAll() ...


    Voilà, je ne comprends donc pas pourquoi la jsp ne prépare les attributs dans le html !?! j'ai vraiment l'impression que tout est en ordre ....

    Merci pour vos aides !


  2. #2
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Met toi en debug et regarde ce que te retournes ton findAll().
    Est ce que la liste est vide? Est-ce que ce sont bien des clients?

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Bonsoir,

    Merci pour votre réponse !

    En fait j'ai tout simplement écris les noms d'attributs différents des noms de ceux qui sont dans la base. C'est pour cela que la fonction findAll() renvoyait du null !!!

    C'est une erreur ridicule mais il faut en passer par là ....

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

Discussions similaires

  1. Utiliser une méthode d'une instance, dans une callback
    Par qdaemon_fr dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2014, 18h09
  2. [ATL] Utiliser une instance d'une règle dans une autre règle
    Par sacha33 dans le forum Eclipse Modeling
    Réponses: 0
    Dernier message: 02/06/2013, 23h41
  3. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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