@Service @Transactional
public class Shopbean implements ShopDao{
private Map<String,String> a;
@Resource private SessionFactory sessionFactory;//注入
public void add(String bid, String num) {
a=new HashMap<String,String>();//加到Map每次只能取出一个id,
a.put(bid, num);

}
public List al(){
String sql=" from Book where bid in";
Iterator<String> it=a.keySet().iterator();
String sub="(";
while(it.hasNext()){
int bid=Integer.parseInt((String)it.next());
if(it.hasNext()){
sub+=bid+",";
}else{
sub+=bid+")";
}
}
sql+=sub;
Query q=this.sessionFactory.getCurrentSession().createQuery(sql);
//只能取出一个ID,
List all=q.list();

return all;
}

}//Action
public class ShopAction extends ActionSupport{
@Resource ShopDao shop;//接口注入
private List all=new ArrayList();
private String bid;
public String getBid() {
return bid;
}
public void setBid(String bid) {
this.bid = bid;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
private String num;
public String so(){
HttpServletRequest q=ServletActionContext.getRequest();
HttpSession s=q.getSession();
this.shop.add(bid, num);
all=this.shop.al();
s.setAttribute("my",all);
return SUCCESS;
}}JSP
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>  
 <body>
<s:iterator value="#session.my" status="st">
 <table width="100%" border="1">
<s:property value="#st.index+1;"/>
  <tr>
    <th colspan="5" scope="col"><div align="left" class="bbb">我的购物车</div></th>
  </tr>
  <tr>
    <th scope="row">序列</th>
    <td>图书名称</td>
    <td>图书价格</td>
    <td>购买数量</td>
    <td>删除图书</td>
  </tr>
  <tr> 
    <th scope="row"><s:property value="bid"/></th>
    <td><s:property value="bname"/></td>
    <td><s:property value="price"/></td>
    <td><input type="text" name="textfield" id="textfield" value="<s:property value='num'/>"/> <input type="submit" name="button" id="button" value="修改" /></td>
    <td><input type="submit" name="button2" id="button2" value="删除" /></td>
  </tr>
  <tr>
    <th colspan="5" class="bbb" scope="row"><label>
      
      <div align="left">
        <input type="submit" name="button3" id="button3" value="确定购买" />
        总计金额: 元</div>
    </label></th>
  </tr>
</table> 
</s:iterator>
<a href="First.jsp">返回</a>
  </body>
</html>


帮我看看为什么我把购物车放到session每次从session里只能取出一条,我加到Map里的啊,为什么还是只能取一条,不能取2条出来。比如说我向JSP页面传一个id=1,就可以取出ID=1的商品,我向JSP再传一个id=2;我的购物车应该有2条商品,但是购物车只有ID=2的商品,覆盖了ID=1的商品,这是为什么(我加入到session里的啊)

解决方案 »

  1.   

    public void add(String bid, String num) {
     a=new HashMap<String,String>();//加到Map每次只能取出一个id,
     a.put(bid, num); }你的 add 方法里, 每次都是 new 一个map 出来, 肯定咯, 保存的都是最新的咯
    应该先从 session 里查找map如果为空就new, 不为空的话, 就添加数据, 再放在session里
      

  2.   

    谢谢,我成功了,不用放到session里也可以,提到外面new 就OK