购物车未显示更新的信息

时间:2015-08-06 11:11:48

标签: jsf-2

我使用的是WildFly 9.0和IntelliJ 14 Ultimate 我可以将项目添加到购物车中 - 可以使用ViewCart.xhtml上的PrimeFaces数据表查看它们 有一个按钮可以删除每个购物车项目 - 它有效。 已编辑Faces-config以在单击按钮时返回ViewCart.xhtml页面;这似乎是这种情况。 PROBEM:购物车在删除项目之前仍显示原始列表。 如果我转到产品目录并返回ViewCart.xhtml,则执行的更改将反映在购物车中。请有人帮忙吗?

这是ViewCart.xhtml页面

<body>
<h:outputText value="Cart List"
              style="font-family: Verdana, Helvetica, sans-serif;font-size: 18px;  font-weight: 900;" />
<h:form name="ViewProductsManagedBean">

    <p:dataTable id="cartTable" var="cartList"
                 value="#{ViewProductsManagedBean.cart}"  <p:column>
            <f:facet name="header">
                <h:outputText value="Delete  Cart Item "
                              style="font-family: Verdana, Helvetica, sans-serif;font-size: 16px;" />
            </f:facet>
            <h:commandButton action="#{ViewProductsManagedBean.removeItemFromCart(cartList.itemcode)}"> </h:commandButton>


        </p:column>

        </f:facet>
    </p:dataTable>
</h:form>
</body>
</html>

现在是托管bean:

@ManagedBean(name="ViewProductsManagedBean")
@RequestScoped
public class ViewProductsManagedBean {


    public String removeItemFromCart(String itemCode){
        return cartFunctions.removeItemFromCart(itemCode);
    }



}

&#34;谈话&#34;对业务逻辑

    @Stateful
@SessionScoped
public class CartFacade {


public String removeItemFromCart(String itemCode){
     return cartBean.removeItemFromCart(itemCode);
}

}

购物车看起来如下:

@Stateful
@Local(ShoppingCartLocal.class)
@Remote(ShoppingCart.class)
@SessionScoped
public class ShoppingCartBean implements ShoppingCartLocal, ShoppingCart {


    public String removeItemFromCart(String itemCode){
        for(Orderitem ord:cartItems){
            if(itemCode.equals(ord.getItemcode())){
                cartItems.remove(ord);
                System.out.println("Item removed " + itemCode);

            }
        }

        return "ViewCart";
    }

这是完整的购物车豆

 package com.shop.cart;

/**
 * Created by LalinPethiyagoda on 30/07/2015.
 */


@Stateful
@Local(ShoppingCartLocal.class)
@Remote(ShoppingCart.class)
@SessionScoped
public class ShoppingCartBean implements ShoppingCartLocal, ShoppingCart {
    @PersistenceContext(unitName ="Shop")
    private EntityManager cartEntityManager;
    private CustomerManager customerManagerBean;
    private CopyOnWriteArrayList<Orderitem> cartItems = new CopyOnWriteArrayList<>();
    private List<Orderitem> cartItemsReturn = new ArrayList<>();

    public void setCartItems(CopyOnWriteArrayList<Orderitem> cartItems) {
        this.cartItems = cartItems;
    }



    private  CustomerEntity customer;


    public ShoppingCartBean(){}


@Override
    public List<Orderitem> getCartItemsReturn() {
        return cartItemsReturn;
    }
    public void setCartItemsReturn(List<Orderitem> cartItemsReturn) {
        this.cartItemsReturn = cartItemsReturn;
    }

    @Override
    public boolean addCartItem(ProductEntity product, int quantityPurchased){
        com.shop.entity.Orderitem basketItem=new Orderitem();
        Locale currentLocale = new Locale("en", "GB");
        double subTotal;

            // check for duplicate entry.
        for (Orderitem itemsIntheCart : cartItems) {
            if (itemsIntheCart.getItemcode().equals(product.getItemcode())) {
                    return false;
            }
        }

            basketItem.setItemcode(product.getItemcode());
            basketItem.setItemdescription(product.getItemdescription());
            basketItem.setUnitprice(product.getUnitprice());
            basketItem.setQuantitypurchased(quantityPurchased);
            subTotal = quantityPurchased * basketItem.getUnitprice();
            Double currencyAmount = new Double(subTotal);
            NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(currentLocale);
            currencyFormatter.format(currencyAmount);
            basketItem.setSubtotal(currencyAmount);
            cartItems.add(basketItem);
            return true;
    }

    public String removeItemFromCart(String itemCode){
        for(Orderitem ord:cartItems){
            if(itemCode.equals(ord.getItemcode())){
                cartItems.remove(ord);

                System.out.println("Item removed " + itemCode);

            }
        }

        return "ViewCart";
    }


@Override
    public CopyOnWriteArrayList<Orderitem> viewCartItems(){
    return this.cartItems;
    }

    @Override
    public CopyOnWriteArrayList<Orderitem> getCartItems(){
        CopyOnWriteArrayList<Orderitem> cartItemList = this.cartItems;
        for(Orderitem x:cartItemList){
            System.out.println(x.getItemdescription());
        }
        return cartItemList;
    }


    public  CustomerEntity getCustomer() {
        return customer;
    }
    public  void setCustomer(CustomerEntity customer) {
        this.customer = customer;
    }

    public void removeCartItem(int itemCode){
        System.out.println("hello");

    }

    @Override
    public double getTotal(){
        double total=0;
        for(Orderitem bItem:getCartItems()){
            total = total + bItem.getSubtotal();
        }
        return total;
    }

    @PreDestroy
    public void exit(){
        persistCartItems();
        stopSession();
    }
    @Override
    public void persistCartItems() {
        // TODO Auto-generated method stub

    }
    @Remove
    public void stopSession(){
        System.out.println("saved- all done - object detached from object pool");
    }

    public void assignCartToCustomer(){
        customer = customerManagerBean.getVerifiedCustomer();
    }

    public CustomerEntity getCustomerAssociatedWithTheCart(){
        return this.customer;
    }
    @Remove
    public void remove() {
        cartItems = null;
    }

    @Override
    public void incrementQuantity() {
    }
    @Override
    public void decrementQuantity() {
    }

}

0 个答案:

没有答案