天天看點

springMVC重定向傳參

最近做公司項目,遇到一個問題,需要重定向到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表達式就可以取值