最近做公司项目,遇到一个问题,需要重定向到Controller还要传递参数,在网上找了资料,终于知道了,现在分享一下
<span style="white-space:pre"> </span>@RequestMapping(value="/deleteCategory")
public String deleteCategory(String serviceClassId, RedirectAttributesModelMap redirectMap) throws Exception{
TppecsUser user = new RequestHelper().getUserInfo();
// redirectMap.put("code", "");
// redirectMap.put("msg", "shibai");
redirectMap.addFlashAttribute("code", "213");
redirectMap.addAttribute("code1", "code1");
serviceItemCategoryService.deleteProductCategory(serviceClassId);
return "redirect:/serviceItemCategory/viewCategory.do";
}
这里用的RedirectAttributesModelMap,其实RedirectAttributes 和RedirectAttributesModelMap是一样的
先说明一下ModelMap 、RedirectAttributes 、RedirectAttributesModelMap的用法
使用ModelMap其实重定向是可以传参的,用modelMap.put("code","999")或者modelMap.addAttribute("code","999");
<span style="white-space:pre"> </span>@RequestMapping("/deleteCategory")
public String deleteCategory(Long spClassId,ModelMap modelMap) throws ApiException{
TppecsUser user = new RequestHelper().getUserInfo();
//客服系统
try{
if(spClassId!=null){
int i = serviceProviderCategoryService.findSpClassId(spClassId);
if(i<=0){
serviceProviderCategoryService.delete(spClassId);
}else{
modelMap.addAttribute("code","999");
}
}
}catch(Exception e){
e.printStackTrace();
}
return "redirect:/serviceProviderCategory/viewCategory.do";
}
使用ModelMap 后必须在viewCategory.do的Controller的中接收这个参数,才能使用
<span style="white-space:pre"> </span>@RequestMapping(value="/viewCategory")
public String searchCategory(TppecsSearchSpCategory vo,String code,ModelMap modelMap ,HttpSession session ){
try {
PagingResult<Map<String, Object>> dataPaging = new PagingResult<Map<String, Object>>();
if(vo.getPageno() == null || vo.getPageno()==0){
vo.setPageno(1);
}
log.debug(vo.getSp_Order()+"spOrder=======");
log.debug(vo.getClass_Name()+"className=======");
log.debug(vo.getSp_CalssNum()+"spClassNum=======");
log.debug(vo.getParent_Id()+"parentId=======");
dataPaging = serviceProviderCategoryService.querysearchAll(vo);
modelMap.put("vo", vo);
modelMap.addAttribute("code",code);
modelMap.put("dataPaging",dataPaging );
} catch (Exception e) {
e.printStackTrace();
}
return "serviceprovider/category/categoryList";
}
然后再把这个值put到ModelMap 中,在页面用el表达式可以取到值。
这样不需要再目标Controller加接收参数,直接在重定向后的页面用el表达式就可以取值