Tableau d'objet inacessible en tant qu'objet

cs_mael974 Messages postés 108 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 10 mars 2011 - 16 avril 2009 à 17:28
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Derniè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 ???

merci d'avance

> MaEl <

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 avril 2009 à 17:45
Si t'es en java 5, utilise les generics :
public synchronized Collection getAll() {
return dao.getAll();
}
0
cs_mael974 Messages postés 108 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 10 mars 2011
17 avril 2009 à 10:48
salut, j'ai bien tenter de typer mon ArrayList ms je perd l'acces a mes objets! j'ai fais un petit test :

    public static void main(String[] args) {
       

        DaoImpl dao = new DaoImpl();
        dao.init();
        Object o = new Object();
   
        ArrayList array = (ArrayList) dao.getAll();

        o =(Object)array.get(1);
   
   System.out.println(o.getClass());
   System.out.println(o.toString());

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??

merci d'avance

> MaEl <
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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);
0
Rejoignez-nous