Eclipse pour me signale des erreurs de syntaxe (sans plus de précision) dans mon code du fichier products.jsp.
J'ai procédé de la manière suivante :
Imports :
<%@ page import="java.util.Collection"%>
<%@ page import="com.yaps.petstore.common.dto.ProductDTO"%>
<html>
...
<%--CENTRAL BODY--%>
<%
final Collection productsDTO = (Collection) request.getAttribute("collection");
for (ProductDTO productDTO : productsDTO)
{
String str = "<A href=\"" + <%= request.getContextPath() %> + "/finditems?productId=" + <%= productDTO.getId() %> + "\">" + <%= productDTO.getName() %> + "</A>";
out.println(str);
}
%>
Eclipse signale une erreur à l'intérieur de la boucle for. Quelqu'un comprend pourquoi ?
TP08 : problème avec la jsp products.jsp
Modérateurs : graffion, jmdouin, agoncal, mlebihan
Re: TP08 : problème avec la jsp products.jsp
Bonsoir dbe,
la servlet qui récupère la liste des products est : FindProductsServlet.
Après avoir récupéré cette liste, cette servlet stocke le résultat dans un attribut pour pouvoir être réutilisé par la suite ;
Le nom de l'attribut est productsDTO (et non pas collection comme tu le mentionnes), donc ton appel doit être :
final Collection productsDTO = (Collection) request.getAttribute("productsDTO");
Patrice
la servlet qui récupère la liste des products est : FindProductsServlet.
Après avoir récupéré cette liste, cette servlet stocke le résultat dans un attribut pour pouvoir être réutilisé par la suite ;
Code : Tout sélectionner
request.setAttribute("[color=#FF0000]productsDTO[/color]", productsDTO);
final Collection productsDTO = (Collection) request.getAttribute("productsDTO");
Patrice
Re: TP08 : problème avec la jsp products.jsp
Bonjour,
La servlet FindProductsServlet utilise la jsp products pour afficher du code HTML, comme indiqué dans l'implémentation:
try {
...
productsDTO = new CatalogDelegateFactory().createCatalogDelegate().findProducts(categoryId);
request.setAttribute("productsDTO", productsDTO);
getServletContext().getRequestDispatcher("/products.jsp").forward(request, response);
....
Donc, tu dois changer, comme indiqué par un autre auditeur, "collection" par "produtsDTO" et utiliser un iterator pour parcourir
une collection et non une boucle for (voir explication cours NFP 121 de JM Douin). N'oublie pas d'importer le package:
java.util.Iterator:
<%@ page import="java.util.Collection,
java.util.Iterator,
com.yaps.petstore.common.dto.ProductDTO"%>
.....
<jsp:scriptlet>
final Collection productsDTO = (Collection) request.getAttribute("productsDTO");
for (Iterator iterator = productsDTO.iterator(); iterator.hasNext();) {
final ProductDTO productDTO = (ProductDTO) iterator.next();
</jsp:scriptlet>
.....
Ce code ne pas signaler d'erreur
Cordialement
mars23
La servlet FindProductsServlet utilise la jsp products pour afficher du code HTML, comme indiqué dans l'implémentation:
try {
...
productsDTO = new CatalogDelegateFactory().createCatalogDelegate().findProducts(categoryId);
request.setAttribute("productsDTO", productsDTO);
getServletContext().getRequestDispatcher("/products.jsp").forward(request, response);
....
Donc, tu dois changer, comme indiqué par un autre auditeur, "collection" par "produtsDTO" et utiliser un iterator pour parcourir
une collection et non une boucle for (voir explication cours NFP 121 de JM Douin). N'oublie pas d'importer le package:
java.util.Iterator:
<%@ page import="java.util.Collection,
java.util.Iterator,
com.yaps.petstore.common.dto.ProductDTO"%>
.....
<jsp:scriptlet>
final Collection productsDTO = (Collection) request.getAttribute("productsDTO");
for (Iterator iterator = productsDTO.iterator(); iterator.hasNext();) {
final ProductDTO productDTO = (ProductDTO) iterator.next();
</jsp:scriptlet>
.....
Ce code ne pas signaler d'erreur
Cordialement
mars23