セッションスコープのマネージドBeanを使用すると、カートの情報を保持できます。ここでは基本的なキックオフの例は、(重複商品と数量が占めていない、それは全体的なアイデアを与えることだけです)です:
@ManagedBean
@SessionScoped
public class Cart {
private List<Product> products = new ArrayList<Product>();
public void add(Product product) {
products.add(product);
}
public void remove(Product product) {
products.remove(product);
}
public List<Product> getProducts() {
return products;
}
}
(あなたは量を追跡するためにMap<Product, Integer>
またはMap<Product, Order>
を使用することができます)
あなたは可能性があり次のようにカートを表示:
<h:dataTable value="#{cart.products}" var="product">
<h:column>#{product.description}</h:column>
<h:column><h:commandButton value="Remove" action="#{cart.remove(product)}" /></h:column>
</h:dataTable>
次のように、別のテーブルからカートに製品を追加することができます。
<h:dataTable value="#{products.list}" var="product">
<h:column>#{product.description}</h:column>
<h:column><h:commandButton value="Add" action="#{cart.add(product)}" /></h:column>
</h:dataTable>
ステートフルEJBは、さまざまなAPI /フレームワークやリモートクライアントでWebアプリケーションの別の場所で使用できるようにしたい場合、または永続コンテキストを使用してアイテムをロックする場合にのみ重要です他の顧客がそれをカートに追加することができないようにすることができる。 JSFはセッションスコープのマネージドBeanをそこに格納し、JSFのカバーの下から生のServlet APIを外部に公開したくないので、HttpSession
は関係ありません。
ありがとうございます。あなたが私の質問の1つに答えるたびにクリスマスのようです。 – glasspill
あなたは大歓迎です。 – BalusC
'クラス 'javax.faces.component.html.HtmlDataTable'に 'description'プロパティがないなどのエラーが発生した場合は、おそらく別の名前に同じ名前を使用しているように、' var'の名前を変更します他の場所、それは現在のものと競合しており、あなたは原因を探している年齢を過ごすでしょう。 – glasspill