ONJava.com -- JBoss Seam --> page 3
詳細
第1、2、
3,4,5ページ
後退ボタンやマルチラベルやウィンドウがアプリケーションを破壊せず、正常に動作することを確認する必要があります.このため、検索の実行時に開始し、ユーザーが請求書の支払いをしたときに終了する「会話」が導入されます.検索操作を処理し、結果間をナビゲートするセッションBeanから始めましょう.
この状態のあるセッションBeanは、会話のコンテキストに格納され、会話の終了時に消滅する.カートはSeamによって管理される別のセッションBeanコンポーネントであり、
第1,2,3,4,5ページ
次のページ
第1、2、
3,4,5ページ
後退ボタンやマルチラベルやウィンドウがアプリケーションを破壊せず、正常に動作することを確認する必要があります.このため、検索の実行時に開始し、ユーザーが請求書の支払いをしたときに終了する「会話」が導入されます.検索操作を処理し、結果間をナビゲートするセッションBeanから始めましょう.
package com.jboss.dvd.seam;import [...]@Stateful@Name("search")@Conversational(ifNotBegunOutcome="main")@Scope(ScopeType.CONVERSATION)@Interceptors(SeamInterceptor.class)public class SearchAction implements Search, Serializable{ @In(create=true) ShoppingCart cart; @PersistenceContext(unitName="dvd") EntityManager em; private int pageSize = 20; private int currentPage = 0; private boolean hasMore = false; private Category category = null; private String title = null; private String actor = null; @Out(scope=CONVERSATION,required=false) List searchResults; @Out(scope=CONVERSATION,required=false) Map searchSelections; // Getters and setters for // category, title and actor @Begin(join=true, processDefinition="shopping") public String doSearch() { currentPage=0; updateResults(); return "browse"; } public String nextPage() { if (!isLastPage()) { currentPage++; updateResults(); }return null; } public String prevPage() { if (!isFirstPage()) { currentPage--; updateResults(); }return null; } public boolean isLastPage() { return (searchResults != null) && !hasMore; } public boolean isFirstPage() { return (searchResults != null) && (currentPage == 0); } private void updateResults() { [...] searchResults = [...] searchSelections = [...] } private Query searchQuery(String title, String actor, Category category) { title = (title == null) ? "%" : "%" + title.toLowerCase() + "%"; actor = (actor == null) ? "%" : "%" + actor.toLowerCase() + "%"; if (category == null) { return em.createQuery( "from Product p where lower(p.title) like " + ":title and lower(p.actor) LIKE :actor") .setParameter("title", title) .setParameter("actor", actor); } else { return em.createQuery( "from Product p where lower(p.title) like " + ":title and lower(p.actor) like :actor " + "and p.category = :category") .setParameter("title", title) .setParameter("actor", actor) .setParameter("category", category); } } public String addToCart() { for (Product item: searchResults) { Boolean selected = searchSelections.get(item); if ( selected!=null && selected ) { searchSelections.put(item, false); cart.addProduct(item, 1); } } return "browse"; } @Destroy @Remove public void destroy() {} }
この状態のあるセッションBeanは、会話のコンテキストに格納され、会話の終了時に消滅する.カートはSeamによって管理される別のセッションBeanコンポーネントであり、
SearchAction
セッションBeanに注入され、これにより、複数の検索が確立されたときに失われない.searchResults
およびsearchSelections
のオブジェクトは、現在の会話の中で生存する.使用するメモリは、会話の終了時に解放されます.第1,2,3,4,5ページ
次のページ