Spring MVC - Multiple submit button to a Form
if the form has these buttons specified:
input type="submit" class="button" name="save" value="Save"input type="submit" class="button" name="delete" value="Delete"input type="submit" class="button" name="cancel" value="Cancel"
you may direct to different url request according to button pressed with one controller.
for cancel button,
@RequestMapping(params = "cancel", method = RequestMethod.POST)public String cancelUpdateUser(HttpServletRequest request) { return "redirect:/users.html";}
what request mapping does is to scan post request if it contains params name = cancel.
for save button,
@RequestMapping(params = "save", method = RequestMethod.POST)public String saveUser(HttpServletRequest request, @ModelAttribute User user, BindingResult result, SessionStatus status) { // validate your result // if no errors, save it and redirect to successView.}
Why not:
<input type="submit" name="action" value="save" />
and then:
@RequestMapping(value="/save", method=RequestMethod.POST)public String handlePost(@RequestParam String action){ if( action.equals("save") ){ //handle save } else if( action.equals("renew") ){ //handle renew }}
If You have more controller methods with the same @RequestMapping
that differs only in params
attribute, You have to explicitly write:
- which parameter is supposed to be present in the request, e.g.
params="save"
- which parameter is NOT supposed to be present in the request, e.g.
params="!save"
In Your case:
@RequestMapping(value="/save", method=RequestMethod.POST, params={"save", "!renew"})@RequestMapping(value="/save", method=RequestMethod.POST, params={"renew", "!save"})
This should fix error Ambiguous handler methods mapped for HTTP path ...