Problème de CAST au niveau d'une JSP
Bonjour à tous,
je vous expose mon problème, je développe un site internet en J2EE. J'en suis pour l'instant aux fonctions de base : création d'un objet et affichage des objets crées dans une jsp.
Je vous décris plus en détails mes étapes qui aboutissent au problème :
-je travaille dans une façade en @Local
-je lance ma servlet objets.Ajout.java, cette servlet contient :
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
facade.createObjet("objet1", 10);
facade.createObjet("objet2", 15);
}
et dans façade j'ai :
public void createObjet(String name, float prix) {
// TODO Auto-generated method stub
Objets ob = new Objets(name, prix);
em.persist(ob);
}
- ensuite, je lance la servlet objets.List.java qui contient :
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ArrayList<Objets> al = facade.listObjet();
request.setAttribute("listeObjet", al);
RequestDispatcher disp = request.getRequestDispatcher("/objets.jsp");
disp.forward(request, response);
}
et la facade contient :
public ArrayList<Objets> listObjet() {
// TODO Auto-generated method stub
Query q = em.createQuery("select a from objet.Objets as a");
List<Objets> l = (List<Objets>) q.getResultList();
return new ArrayList<Objets>(l);
}
- cette servlet forward vers objets.jsp :
<table>
<tr>
<th>Nom</th>
<th>Prix</th>
</tr>
</tr>
<br> <%
Object ret = request.getAttribute("listeObjet");
ArrayList<Objets> al = (ArrayList<Objets>) ret;
out.println(al);
for (int i = 0; i < al.size(); i++) {
Objets ob = al.get(i);
out.println("<tr><td>" + ob.getNom() + "</td><td>"
+ ob.getPrix() + "</td></tr>");
}
%>
</table>
j'obtiens finalement cette erreur :
org.apache.jasper.JasperException: An exception occurred processing JSP page /objets.jsp at line 48
45: out.println(al);
46: for (int i = 0; i < al.size(); i++) {
47:
48: Objets ob = al.get(i);
49: out.println("<tr><td>" + ob.getNom() + "</td><td>"
50: + ob.getPrix() + "</td></tr>");
51: }
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
objets.List.doPost(List.java:55)
objets.List.doGet(List.java:41)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
cause m�re
java.lang.ClassCastException: objet.Objets cannot be cast to objet.Objets
org.apache.jsp.objets_jsp._jspService(objets_jsp.java:105)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
objets.List.doPost(List.java:55)
objets.List.doGet(List.java:41)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
- Quand je fais juste un out.println(al) cela fonctionne j'obtiens bien ma page avec mes 2 objets =>
[objet.Objets@125ff6c6, objet.Objets@5a424a96]
- mais à partir du moment ou je fais un Objets ob = al.get(i); j'ai l'erreur du dessus.
Je ne vois pas d'où peut provenir l'erreur...
Merci d'avance pour vos réponses :ccool: