我想要的是显示与每个产品的“添加到购物车”按钮的产品列表。如何将该按钮与产品关联?
也就是说,如果我单击将商品A添加到购物车中,我将如何在按钮中指定,以调用将添加商品的ShoppingCart类。
我已经有了一个servlet,用于将所有产品填充到ArrayList中,并将其转发到JSP页面。
<form action="products" method="get">
<table border=1>
<c:forEach items="${products}" var="product">
<tr>
<td>${product.id}</td>
<td>${product.description}</td>
<td>${product.unitPrice}</td>
<td><input type="button" value="Add to cart" onlick="????"/></td>
</tr>
</c:forEach>
</table>
</form>发布于 2011-03-30 01:15:27
将表单放在<td>中,而不是放在桌子周围。使用<inupt type="submit">让按钮真正起作用,而不需要JavaScript黑客,因为在禁用JS的let浏览器上无论如何都会失败。在表单中包含一个<input type="hidden">以传递产品ID。
摘要:
<table border=1>
<c:forEach items="${products}" var="product">
<tr>
<td>${product.id}</td>
<td>${product.description}</td>
<td>${product.unitPrice}</td>
<td>
<form action="products" method="get">
<input type="hidden" name="id" value="${product.id}" />
<input type="submit" value="Add to cart"/>
</form>
</td>
</tr>
</c:forEach>
</table>这样,它将在监听/products的servlet的doGet()方法中如下所示。
String id = request.getParameter("id");
// ...对于与具体问题无关的,您应该使用POST而不是GET。否则,当他/她将结果页加入书签并稍后打开它时,或者当他/他只是在电子邮件/即时消息/站点/等中单击/跟随另一个(潜在的恶意)人员传递的链接时,用户将能够将另一个产品添加到他的篮子中。将method="get"替换为method="post",并将doGet()中的逻辑移动到doPost()。
发布于 2011-03-30 01:08:56
<td><a href="/yourShopKeeperServlet?productId=${product.id}"> <~-- Your Image Goes here --> </a></td>它将使GET转到servlet。从那里你可以读到
request.getParameter("productId");发布于 2011-03-30 01:08:53
我已经在jsp上工作了很长时间了,但是我可以给你一个概念,并把实现留给你。
在每个servlet tr servlet中你将有一个表单,与隐藏的值item_id和按钮在表单中作为提交动作,以及另一个隐藏项命名为"add“servlet每个表单将提交给你的一个servlet,让我们命名为shoppingcart
https://stackoverflow.com/questions/5476201
复制相似问题