跨Bean选择ArrayList中的项目

时间:2015-01-04 13:07:55

标签: jsf cart

我正在创建一个网上商店,我从SQL数据库获取信息并将其放入名为MySQLBean的bean中的项目数组中。到目前为止一切都很好。

private void doSelect() {

    try {Connection conn = ds.getConnection();
       try {PreparedStatement dbQuery = conn.prepareStatement("SELECT * from item");
            ResultSet resultset = dbQuery.executeQuery();
            results.clear();
            while(resultset.next()){
                results.add(new Item(resultset.getInt("id"),
                                     resultset.getString("name"),
                                     resultset.getDouble("price"),
                                     resultset.getString("description")));
            }
       }
       finally {conn.close();
       }
    } 
    catch (SQLException e){e.printStackTrace();}
}

现在我在网站上有一个按钮,用于将要购买的商品的ID发送到另一个名为ShoppingCartBean的bean。

<h:form prependId="false">
    <h:commandLink id="addToCart"
        action="#{shoppingCartBean.addToCart(item.id)}"
        styleClass="btn btn-default">
        <i class ="icon-search"></i> #{msgs.addToCart} 
    </h:commandLink>
</h:form>

item.id数据发送到shoppingCartBean后,我希望从之前加载的数组中选择带有相应id的项目,并将整个项目添加到新数组中这样我以后就可以将项目列表打印给我的用户了。但我完全不知道如何做到这一点。

编辑:格式错误 编辑:试图澄清问题

1 个答案:

答案 0 :(得分:0)

只需发送整个项目#{item},而不只发送其ID #{item.id}

换句话说,而不是

action="#{shoppingCartBean.addToCart(item.id)}"

DO

action="#{shoppingCartBean.addToCart(item)}"

public void addToCart(Item item) {}