1 package org.springframework.samples.jpetstore.web.spring; 2 3 import java.util.HashMap ; 4 import java.util.Map ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.http.HttpServletResponse ; 8 9 import org.springframework.beans.support.PagedListHolder; 10 import org.springframework.samples.jpetstore.domain.Category; 11 import org.springframework.samples.jpetstore.domain.logic.PetStoreFacade; 12 import org.springframework.web.servlet.ModelAndView; 13 import org.springframework.web.servlet.mvc.Controller; 14 15 19 public class ViewCategoryController implements Controller { 20 21 private PetStoreFacade petStore; 22 23 public void setPetStore(PetStoreFacade petStore) { 24 this.petStore = petStore; 25 } 26 27 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 28 Map model = new HashMap (); 29 String categoryId = request.getParameter("categoryId"); 30 if (categoryId != null) { 31 Category category = this.petStore.getCategory(categoryId); 32 PagedListHolder productList = new PagedListHolder(this.petStore.getProductListByCategory(categoryId)); 33 productList.setPageSize(4); 34 request.getSession().setAttribute("ViewProductAction_category", category); 35 request.getSession().setAttribute("ViewProductAction_productList", productList); 36 model.put("category", category); 37 model.put("productList", productList); 38 } 39 else { 40 Category category = (Category) request.getSession().getAttribute("ViewProductAction_category"); 41 PagedListHolder productList = (PagedListHolder) request.getSession().getAttribute("ViewProductAction_productList"); 42 if (category == null || productList == null) { 43 throw new IllegalStateException ("Cannot find pre-loaded category and product list"); 44 } 45 String page = request.getParameter("page"); 46 if ("next".equals(page)) { 47 productList.nextPage(); 48 } 49 else if ("previous".equals(page)) { 50 productList.previousPage(); 51 } 52 model.put("category", category); 53 model.put("productList", productList); 54 } 55 return new ModelAndView("Category", model); 56 } 57 58 } 59 | Popular Tags |