package org.springframework.samples.jpetstore.web.struts; import javax.servlet.ServletContext; import org.apache.struts.action.Action; import org.apache.struts.action.ActionServlet; import org.springframework.samples.jpetstore.domain.logic.PetStoreFacade; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; /** * Superclass for Struts actions in JPetStore's web tier. * * <p>Looks up the Spring WebApplicationContext via the ServletContext * and obtains the PetStoreFacade implementation from it, making it * available to subclasses via a protected getter method. * * <p>As alternative to such a base class, consider using Spring's * ActionSupport class for Struts, which pre-implements * WebApplicationContext lookup in a generic fashion. * * @author Juergen Hoeller * @since 30.11.2003 * @see #getPetStore * @see org.springframework.web.context.support.WebApplicationContextUtils#getRequiredWebApplicationContext * @see org.springframework.web.struts.ActionSupport */ public abstract class BaseAction extends Action { private PetStoreFacade petStore; public void setServlet(ActionServlet actionServlet) { super.setServlet(actionServlet); if (actionServlet != null) { ServletContext servletContext = actionServlet.getServletContext(); WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); this.petStore = (PetStoreFacade) wac.getBean("petStore"); } } protected PetStoreFacade getPetStore() { return petStore; } }