세션 범위 관리 빈을 사용하여 장바구니 정보를 보유 할 수 있습니다. 여기에 기본 킥오프 예입니다 (제품 설명되지 수량을 복제, 그것은 전체적인 아이디어를주고 그냥) :
이
@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>
당신은 다른 테이블에서 장바구니에 제품을 추가 할 수 있습니다 :
를 다음과 같이 카트를 표시 0
<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>
stateful EJB는 다른 API/프레임 워크 또는 원격 클라이언트에서 웹 응용 프로그램의 다른 위치에서 사용할 수 있기를 원하거나 영속성 컨텍스트를 사용하여 항목을 잠그려고 할 때만 유용합니다 현재 카트에 있으므로 다른 고객이 장바구니에 추가 할 수 없습니다. HttpSession
은 JSF가 세션 범위의 관리 빈을 어쨌든 저장하기 때문에 JSF의 커버 아래에서 원시 Servlet API를 외부로 노출하고 싶지 않으므로 관련이 없습니다.
감사합니다. 당신이 내 질문 중 하나에 대답 할 때마다 거의 크리스마스와 같습니다. – glasspill
당신을 진심으로 환영합니다. – BalusC
그리고 '클래스'javax.faces.component.html.HtmlDataTable '에'description '속성이 없으면 다른 클래스에 같은 이름을 사용했을 가능성이 있으므로'var'의 이름을 변경하십시오. 다른 곳에서는 현재와 충돌합니다. 원인을 찾느 라 오래 보낼 것입니다. – glasspill