Issue
if I write in my controller method:
return "redirect:url";
What parameters will be passed to url (it maybe controller method or jsp page)?
Solution
With RedirectAttributes
, you can pass almost any data to the redirect URL:
@RequestMapping(value="/someURL", method=GET)
public String yourMethod(RedirectAttributes redirectAttributes)
{
...
redirectAttributes.addAttribute("rd", "rdValue");
redirectAttributes.addFlashAttribute("fa", faValue);
return "redirect:/someOtherURL";
}
When you use addAttribute
to add attributes, this will end up in the target redirect URL. These attributes are used to construct the request parameters and the client (browser) will send a new request to the redirect URL
with these parameters. With this, you are limited to use String or primitives as your redirect attributes.
And when you use addFlashAttribute
, these attributes are saved temporarily before the redirect (typically in the session) and are available to the request after the redirect and removed immediately. The advantage of using flashAttributes
is that, you can add any object as a flash attribute (as it is stored in session).
Answered By - Debojit Saikia
Answer Checked By - Mary Flores (JavaFixing Volunteer)