2011-11-16 20 views
6

私は、さまざまな部分で構成されたユーザー選択構成を保存する方法が必要です。各パーツは、マネージドBeanから提供されるリスト(パーツタイプごとに1つ)から別のページで選択されます。セッションスコープ管理BeanとステートフルBean対httpsession

今楽しい部分です。私は上記のすべてのページのテンプレートに<ui:include>で挿入されたすべてのページについて、常にデータ可視化可能、同じ可視性を持っています。私はこのデータテーブルに、ユーザーが部品に対して行う選択肢や選択肢の変更を反映させたい。おそらくそのような設定をdbに保存することもできますが、それは今私の優先事項ではありません。それはショッピングカートのようなものだが、私は別のユーザーを持っていない(それは唯一のプロトタイプである)ので、ログインは必要ない。

これは私の最初のJavaee、jsf、ejbとの遭遇であり、どのアプローチが最善かはわかりません。私はさまざまな選択肢について読んできましたが、いずれにしてもうまくいくと思いますので、何か不足している可能性があります。

誰かが私を正しい方向に向けると感謝します。

答えて

11

セッションスコープのマネージド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

ありがとうございます。あなたが私の質問の1つに答えるたびにクリスマスのようです。 – glasspill

+0

あなたは大歓迎です。 – BalusC

+0

'クラス 'javax.faces.component.html.HtmlDataTable'に 'description'プロパティがないなどのエラーが発生した場合は、おそらく別の名前に同じ名前を使用しているように、' var'の名前を変更します他の場所、それは現在のものと競合しており、あなたは原因を探している年齢を過ごすでしょう。 – glasspill

関連する問題