如何解决:redirect-SpringMVC重定向传参的问题:addFlashAttribute

2024-11-28 13:47:18
推荐回答(2个)
回答(1):

@RequestMapping(value = "/xx", method = RequestMethod.POST)
public String xxx(RedirectAttributes redirectAttributes) throws Exception {
redirectAttributes.addFlashAttribute("xx", "xx!");//使用addFlashAttribute,参数不会出现在url地址栏中
return "redirect:/yy";
}

要是知道原理就很简单了:redirectAttributes.addFlashAttribute()是把参数放在session中 ,跳转之后再从session中移除。在重定向的页面是可以用el取数据的,但是在重定向到的controller(action)怎么获取呢?也是有方法的:
方法一:利用httpServletRequest
public String test2(HttpServletRequest request)
{
Map map = RequestContextUtils.getInputFlashMap(request);
System.out.println(map.get("test").toString());
return "/test/hello";
}
方法二:利用Spring提供的标签@ModelAttribute
public String test2(@ModelAttribute("test") String str)
{
System.out.println(str);
return "/test/hello";
}

部分代码copy自网上,懒得自己写了

回答(2):

@RequestMapping(value = "/xx", method = RequestMethod.POST)  
public String xxx(RedirectAttributes redirectAttributes) throws Exception {  
    redirectAttributes.addFlashAttribute("xx", "xx!");//使用addFlashAttribute,参数不会出现在url地址栏中  
    return "redirect:/yy";  
}

你要是知道原理就很简单了:redirectAttributes.addFlashAttribute()是把参数放在session中 ,跳转之后再从session中移除。在重定向的页面是可以用el取数据的,但是在重定向到的controller(action)怎么获取呢?也是有方法的:

方法一:利用httpServletRequest
    public String test2(HttpServletRequest request)
{
Map map = RequestContextUtils.getInputFlashMap(request);
System.out.println(map.get("test").toString());
return "/test/hello";
}
     方法二:利用Spring提供的标签@ModelAttribute
public String test2(@ModelAttribute("test") String str)
{
System.out.println(str);
return "/test/hello";
}


部分代码copy自网上,懒得自己写了