package com.conant.order.web.controller; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.collections.Factory; import org.apache.commons.collections.ListUtils; import org.springframework.validation.BindException; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; import com.conant.order.common.PageMsg; import com.conant.order.dao.OrderDao; import com.conant.order.util.Logger; import com.conant.order.util.ProcessException; import com.conant.order.vo.OrderQuerier; import com.conant.order.vo.OrsOrder; import com.conant.order.web.form.OrderStatusEditor; import com.conant.order.web.form.OrderTypeEditor; public class DeleteOrdersController extends SimpleFormController { private static final Logger log = Logger.getLogger( "DeleteOrdersController", Logger.DEBUG, true); private OrderDao orderDao; public DeleteOrdersController() { } public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } protected Object formBackingObject(HttpServletRequest request) throws Exception { log.info("DeleteOrdersController formBackingObject..."); OrderQuerier querier = new OrderQuerier(); if(isFormSubmission(request)) { // ��List������Ҫʹ��LazyList�������޷��� List listOrder = ListUtils.lazyList(new ArrayList(), new Factory() { public Object create() { return new OrsOrder(); } }); querier.setListOrder(listOrder); } return querier; } protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { log.info("DeleteOrdersController initBinder..."); super.initBinder(request, binder); // ΪList�����ָ���ֶ�ע��editor binder.registerCustomEditor(Integer.class, "listOrder.orderstatus", new OrderStatusEditor(true)); binder.registerCustomEditor(Integer.class, "listOrder.ordertype", new OrderTypeEditor(true)); } @Override public ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { log.info("DeleteOrdersController onSubmit..."); OrderQuerier querier = (OrderQuerier)command; List<OrsOrder> orders = querier.getListOrder(); log.info("DeleteOrdersController ids length === " + orders.size()); // ����LazyList List<OrsOrder> selectOrders = new ArrayList<OrsOrder>(); for(Iterator<OrsOrder> iter = orders.iterator(); iter.hasNext();) { OrsOrder order = iter.next(); // ����null�����id�ֶ�Ϊnull�Ķ��� if((order != null) && (order.getId() != null)) { selectOrders.add(order); } } PageMsg pageMsg = new PageMsg(); pageMsg.setUrl("/queryOrders.ord"); pageMsg.setTarget("_self"); try { orderDao.deleteOrders(selectOrders); pageMsg.setMsg("Delete Orders successfully!"); return new ModelAndView(this.getSuccessView(), "success", pageMsg); } catch(ProcessException pe) { pageMsg.setMsg(pe.getErrorReason()); return new ModelAndView("common/err", "error", pageMsg); } catch(Exception ex) { pageMsg.setMsg(ex.getMessage()); return new ModelAndView("common/err", "error", pageMsg); } } }