action中的代码如下:
[code="java"]
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
import ez.store.pojo.Book;
import ez.store.pojo.User;
import ez.store.service.UserService;
import ez.store.util.CartItem;
public class OrderCartItemAction extends ActionSupport implements SessionAware{
private UserService userService;
private Map session;
private CartItem ci;
public Map getSession() {
return session;
}
public void setSession(Map session) {
this.session = session;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
// 用于将商品放到购物车里面
public String addBookToCart() {
HttpServletRequest request = ServletActionContext.getRequest();
Book book = (Book) session.get("book");
int score = user.getScore();
String bname = book.getBname();
double price = book.getPrice();
int amount = Integer.parseInt(request.getParameter("amount"));
ci=new CartItem();
Date date = new Date();
Map map = new HashMap();
ci.setBname(bname);
ci.setPrice(price);
ci.setAmount(amount);
map.put(date,ci);
session.put("list",map);
return "success";
}
}
[/code]
然后就在jp页面接受"list"的值用c:if迭代,但是现在每次只能添加一个商品信息进购物车,且第二次添加的会把第一次添加的给覆盖掉。问题好像是因为每次调用这个action都会重新去new一次,但是就是不知道该如何解决?求指点。