最近做公司項目,遇到一個問題,需要重定向到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表達式可以取到值。
最好的方法還是用 RedirectAttributes 或RedirectAttributesModelMap,用 addFlashAttribute的方法把需要的重定向的值都用 addFlashAttribute方法,
這樣不需要再目标Controller加接收參數,直接在重定向後的頁面用el表達式就可以取值