cs_mael974
Messages postés108Date d'inscriptionjeudi 2 juin 2005StatutMembreDernière intervention10 mars 2011
-
16 avril 2009 à 17:28
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
17 avril 2009 à 10:56
Bonjour ,
je vous expose mon cas :
J'ai une classe service qui se charge de me creer une collection de d'objet type Personne:
public synchronized Collection getAll() {
return dao.getAll();
}
=> ce dernier me retourne une collection contenant des Personnes ( nom , age , ect...)
Ma servlet via la methode doListPersonnes me charge le tout et le renvoie a une page JSP :
private void doListPersonnes(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// le modèle de la vue [list]
request.setAttribute("personnes", service.getAll());
// affichage de la vue [list]
getServletContext()
.getRequestDispatcher((String) params.get("urlList")).forward(
request, response);
}
dans ma page JSP on retrouve :
// on récupère les données du modèle
ArrayList personnes = (ArrayList)request.getAttribute("personnes");
....
//parcour et affichage de la collection
<%
for(int i=0;i<td>" + personnes.get(i) + "</td></tr>\n");
}//for
tout marche correctement jusqu'a la !! le seul prbl c'est que qu'il maffiche le tableau comment une suite de caractere alors que mon tableau est censé contenir des objets type Personne!!
de ce fait je peux pas faire un truc style :
out.println("<tr><td>" + personnes.get(i).getPrenom + "</td></tr>\n");
cmt faire pr acceder aux objets du tableaux et faire appel aux methodes de l'objet ???
j'obtient comme resultat :
class fr.cadjee.personnes.entites.Personne -> mindique bien que c'est la classe PErsonne
[2,1,Mélanie,Humbort,12/02/1985,false,1] -> me donne l'ensemble de mes elements
ms je peux trj pas faire un truc du style
o.getNom();
ais je perdu mes references a mon objet Personne??
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 avril 2009 à 10:56
C'est normal, tu n'utilise pas les generics !!!
Les generics te permettent de typer le contenu d'une collection :
Collection col; collection de Personne> col.get(1) te renvoie une instance de type Personne.
Collection col; collection d'object> col.get(1) te renvoie une instance de Personne mais de type object !
Du coup, soit tu utilises les generics, soit tu caste dans le bon type :
Au lieu de faire : o =(Object)array.get(1); fait : o =(Personne)array.get(1);