I would like to know how to read a flash attributes after redirection in Spring MVC 3.1.
I have the following code:
@Controller
@RequestMapping("/foo")
public class FooController {
@RequestMapping(value = "/bar", method = RequestMethod.GET)
public ModelAndView handleGet(...) {
// I want to see my flash attributes here!
}
@RequestMapping(value = "/bar", method = RequestMethod.POST)
public ModelAndView handlePost(RedirectAttributes redirectAttrs) {
redirectAttrs.addFlashAttributes("some", "thing");
return new ModelAndView().setViewName("redirect:/foo/bar");
}
}
What I am missing?
Try this:
works in Spring MVC 3.2.2
For all those like me who were having problems with seeing the POST url in the browser when a validation would fail.
The POST url is a private url that should not be exposed to users but it was automatically rendered when a validation failed. i.e. if a field was below a minimum length. I was using @Valid. I wanted the original GET url of the form to show at all times even when validation bounced back to the form, so I did the following:
where story is the form object representation, redirectAttributes are RedirectAttributes you put in the method signature and validation is the BindingResult. /january/2015 is the mapping to the GET controller where the form lives.
After this implementation, in the mapping for /january/2015, story comes in intact as follows:
I had to augment my GET method and check if this was not null. If not null, then send this to the form else I would send a newly initialized Story type to the form as default behaviour before.
In this manner, I am able to return to the form with the bindingresults intact (errors show on form) but have my GET url in place of the post url.
Use
Model
, it should have flash attributes prepopulated:or, alternatively, you can use
RequestContextUtils#getInputFlashMap
:P.S. You can do return
return new ModelAndView("redirect:/foo/bar");
inhandlePost
.EDIT:
JavaDoc says:
It doesn't mention
ModelAndView
, so maybe change handlePost to return"redirect:/foo/bar"
string orRedirectView
:I use
RedirectAttributes
in my code withRedirectView
andmodel.asMap()
method and it works OK.