Spring mvc:转发到另一个控制器

时间:2015-05-19 07:40:13

标签: java spring forward

我在控制器中有一个方法,显示包含一些过滤器和实体列表的搜索页面。 当我选择一个实体时,我进入编辑实体页面,“保存”按钮保存编辑数据库并返回编辑实体页面。 现在:我应该修改此行为以返回实体列表。

这是列表方法声明,在我的列表控制器中:

 @RequestMapping(value = "/customer/process/{filtro}/{processType}/filter.htm", method = RequestMethod.GET)
 public String showHome(Map model, @PathVariable String filtro, @PathVariable String processType) {

这是我从细节控制器尝试的转发:

return "forward:/customer/process/"+filtro+"/"+processType+"/filter.htm"; 

调用forward方法并显示list-entities-page但我在此页面上的表单有一些问题:它上面的每个提交都转到错误的控制器(详细控制器而不是列表控制器)

(Spring 3.0.5)

sgpalit询问的详细信息:

这就是我所谓的“细节控制器”,它管理“保存”过程:

@Controller
public class ShipmentController {

@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("shipmentForm") ShipmentForm shipmentForm, ModelMap model, HttpServletRequest request) {
    return onSubmitNEW(model, shipmentForm, request);
}

public String onSubmitNEW(ModelMap model,ShipmentForm shipmentForm, HttpServletRequest request) {

    --- save process ---

    model.put("filtro",filtro);
    model.put("processType", processType);
    return "forward:/customer/process/"+filtro+"/"+processType+"/filterfrw.htm";
}

这就是我所谓的“列表控制器”:

@Controller
public class ProcessController {
@RequestMapping(value = "/customer/process/{filtro}/{processType}/filter.htm", method = RequestMethod.GET)
public String showHome(Map model, @PathVariable String filtro, @PathVariable String processType) {
    CustomUserAuthentication ctoken = (CustomUserAuthentication) SecurityContextHolder.getContext().getAuthentication();
    LoginCustomer loginCustomer = ctoken.getLoginCustomer();
    LOG.debug("public String showHome()");

    ResultFilterForm resultFilterForm = new ResultFilterForm();

    List<ShipmentDetail> lDetails = new ArrayList<ShipmentDetail>();
    List<ShipmentHeader> lShipments = new ArrayList<ShipmentHeader>();

    SearchFiltersForm searchFiltersForm = new SearchFiltersForm();
    searchFiltersForm = getSearchFiltersForm(searchFiltersForm);
    searchFiltersForm.setNumPage(0);
    searchFiltersForm.setProcessType(processType.toUpperCase());
    searchFiltersForm.setFiltro(filtro.toUpperCase());
    String strReturn = "";
    List<String> chkPrint = new ArrayList<String>();

    if (filtro.toUpperCase().equals("PIECES")) {
        lDetails = shipmentDetailDAO.getDetails(null, processType, loginCustomer.getLcCustomer().getCwCustomer());

        PagedListHolder pagedListHolder = new PagedListHolder(lDetails);
        int page = 2;
        pagedListHolder.setPage(searchFiltersForm.getNumPage());
        pagedListHolder.setPageSize(pageSize);

        model.put("lDetails", pagedListHolder.getPageList());
        strReturn = "customer/process/listDetails";
        if (lDetails.size() == 0) {
            model.put("isEmpty", "msg_error");
        }
        if (loginCustomer.getLcFlagPrnLbl().equals("Y")) {
            for (int i = 0; i < lDetails.size(); i++) {
                chkPrint.add(lDetails.get(i).getSdCodPiece());
            }
        }
        resultFilterForm.setCurrentPage(pagedListHolder.getPage() + 1);
        resultFilterForm.setNumPage(pagedListHolder.getPageCount() - 1);
    } else {
        lShipments = shipmentHeaderDAO.getShipments(null, processType.toUpperCase(), loginCustomer.getLcCustomer().getCwCustomer());
        PagedListHolder pagedListHolder = new PagedListHolder(lShipments);
        int page = 2;
        pagedListHolder.setPage(searchFiltersForm.getNumPage());
        pagedListHolder.setPageSize(pageSize);


        model.put("lShipments", pagedListHolder.getPageList());
        strReturn = "customer/process/listShipments";

        if (lShipments.size() == 0) {
            model.put("isEmpty", "msg_error");
        }
        if (loginCustomer.getLcFlagPrnLbl().equals("Y")) {
            for (int i = 0; i < lShipments.size(); i++) {
                chkPrint.add(i + "");
            }
        }
        resultFilterForm.setCurrentPage(pagedListHolder.getPage() + 1);
        resultFilterForm.setNumPage(pagedListHolder.getPageCount() - 1);
    }

    resultFilterForm.setIsAddShipment(loginCustomer.getLcFlagCompMan());
    if (loginCustomer.getLcFlagPrnLbl().equals("Y")) {
        resultFilterForm.setChkPrint(chkPrint);
    } else {
        resultFilterForm.setChkPrint(null);
    }
    resultFilterForm.setSearchFiltersForm(searchFiltersForm);
    resultFilterForm.setPageSize(pageSize);
    model.put("resultFilterForm", resultFilterForm);
    return strReturn;
}
}

0 个答案:

没有答案