appactionlistener.java

来自「JSF+Hibernate+Spring三层架构的一个例子」· Java 代码 · 共 66 行

JAVA
66
字号
package pizzaria;

import java.util.Map;
import javax.faces.FactoryFinder;
import javax.faces.application.Application;
import javax.faces.application.ApplicationFactory;
import javax.faces.component.UICommand;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import javax.servlet.ServletContext;


public class AppActionListener implements ActionListener {

  public void processAction(ActionEvent event) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    String localValue = (String) ((UICommand) event.getComponent()).getValue();

    if ("Buy".equals(localValue)) {
      String productId = (String)
        facesContext.getExternalContext().getRequestParameterMap().get("myForm:productId");
      Map sessionMap = facesContext.getExternalContext().getSessionMap();
      ShoppingCartBean cart = (ShoppingCartBean) sessionMap.get("shoppingCartBean");
      if (cart==null) {
        cart = new ShoppingCartBean();//创建购物车
        sessionMap.put("shoppingCartBean", cart);
      }
      
      ProductBean product = getDatabaseUtil().getProductDetails(productId);
      ShoppingItemBean shoppingItem = new
        ShoppingItemBean(product.getId(), product.getName(), product.getPrice(), 1);
      cart.addShoppingItem(shoppingItem);
    }
    else if ("Pay".equals(localValue)) {
      // insert a record into the database

      OrderBean order = (OrderBean) getValueBinding("#{orderBean}").getValue(facesContext);
      ShoppingCartBean cart = (ShoppingCartBean) 
        getValueBinding("#{shoppingCartBean}").getValue(facesContext);
      if (cart!=null && order!=null) {
        getDatabaseUtil().insertOrder(order, cart);
        // empty shopping cart
        cart.removeShoppingItems();
      }

    }

  }

  private ValueBinding getValueBinding(String valueRef) {
    ApplicationFactory factory =
(ApplicationFactory)FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY);
    Application application = factory.getApplication();
    return application.createValueBinding(valueRef);
  }

  private DatabaseUtil getDatabaseUtil() {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ServletContext servletContext = (ServletContext)
facesContext.getExternalContext().getContext();
    return (DatabaseUtil) servletContext.getAttribute("DATABASE_UTIL");
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?