TP08 : problème avec la jsp products.jsp

Modérateurs : graffion, jmdouin, agoncal, mlebihan

dbe
Messages : 13
Inscription : 05 oct. 2015 13:13

TP08 : problème avec la jsp products.jsp

Message par dbe » 06 déc. 2016 15:34

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 ?

sinnpat
Messages : 3
Inscription : 30 nov. 2015 23:09

Re: TP08 : problème avec la jsp products.jsp

Message par sinnpat » 07 déc. 2016 0:00

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 ;

Code : Tout sélectionner

request.setAttribute("[color=#FF0000]productsDTO[/color]", productsDTO);
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

mars23
Messages : 1
Inscription : 07 déc. 2016 1:00

Re: TP08 : problème avec la jsp products.jsp

Message par mars23 » 07 déc. 2016 1:21

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

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Bing [Bot] et 1 invité