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