我正在添加多个菜品ID,数量和食物说明。
Cart.java
package com.hotelordering;
public class Cart{
int quantity;
int menuid;
String fooddesc;
public void setQuantity(int quantity){
this.quantity=quantity;
}
public int getQuantity(){
return quantity;
}
public void setMenuId(int menuid){
this.menuid=menuid;
}
public int getMenuId(){
return menuid;
}
public void setFoodDesc(String fooddesc){
this.fooddesc=fooddesc;
}
public String getFoodDesc(){
return fooddesc;
}
}
AddToCart.jsp(从提交页面获取参数值)
<%@page import="java.sql.*" %>
<%@page import="java.util.*" %>
<html>
<body>
<form method="post" action="checkCart.jsp">
<%
ArrayList<Cart> list= new ArrayList<Cart>();
Cart cart = new Cart();
Enumeration<String> parameters=request.getParameterNames();
while(parameters.hasMoreElements())
{
String value=parameters.nextElement();
if(value.equals("quantity"))
{
try{
String[] q=request.getParameterValues(value);
for(String quant: q)
{
int quantity=Integer.parseInt(quant);
cart.setQuantity(quantity);
list.add(cart);
session.setAttribute("quantity",list);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
else if(value.equals("menuid"))
{
try{
String[] m=request.getParameterValues(value);
for(String menu: m)
{
int menuid=Integer.parseInt(menu);
cart.setMenuId(menuid);
list.add(cart);
session.setAttribute("menuid",list);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
else
{
try{
String[] fooddesc=request.getParameterValues(value);
for(String food: fooddesc)
{
cart.setFoodDesc(food);
list.add(cart);
session.setAttribute("fooddesc",list);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
out.println("Added to cart !");
%>
<input type="submit" value="Check cart"><br>
</form>
<form action="displayCategory.jsp" method="post">
<input type="submit" value="Add more item"><br>
</form>
</body>
</html>
checkCart.jsp
正在显示quantity
中的menuid
,description
和ArrayList
,但它会覆盖先前的值并再次重复最后输入的值
<%@page import="java.sql.*,java.util.*" %>
<form action="test.jsp" method="post">
<%
Cart cart=new Cart();
ArrayList<Cart> list = (ArrayList<Cart>)session.getAttribute("quantity");
for(Cart c:list)
{
out.println("Quantity" + c.getQuantity() + "<Br>");
out.println("Menu id: " + c.getMenuId() + "<Br>");
out.println("Food description: " + c.getFoodDesc() + "<Br>");
}
%>
<input type="submit" value="submit">
</form>
答案 0 :(得分:0)
在上面的代码中,列表值设置(session.setAttribute
)应该在for循环之外。
其他情况也是如此。
由于您是在for循环本身内部设置列表值,因此仅添加最终值。而且您还需要为for循环中的每个对象初始化新的Cart对象。您的新购物车初始化应该在for循环内
for(String quant: q) {
cart=new Cart();
int quantity=Integer.parseInt(quant);
cart.setQuantity(quantity);
list.add(cart);
}
session.setAttribute("quantity",list);