i have form , validation works. problem comes in when url parameter added. url parameter token , required. controller looks like:
@requestmapping(value = "/resetpassword", method = requestmethod.get) public string showresetform(resetpassword resetpassword, model model, @requestparam(value = "token", required = true) string token, @requestparam(value = "msg", required = false) string msg){ model.addattribute("token", token); return "resetpassword"; } @requestmapping(value = "/resetpassword", method = requestmethod.post) public string setpwd(@modelattribute("resetpassword") @valid resetpassword resetpassword,// redirectattributes redirectattr, bindingresult bindingresult, model model, @requestparam(value = "token", required = true) string token, @requestparam(value = "msg", required = false) string msg){ if (bindingresult.haserrors()) { //redirectattr.addflashattribute("org.springframework.validation.bindingresult.resetpassword",bindingresult); //redirectattr.addflashattribute("resetpassword",resetpassword); return "resetpassword?token="+token; } else { if (token == null) { // todo: no token, here?? return "redirect:/resetpassword?token=\"\"&msg=notoken"; } resetpasswordresponsedto response = super.resetuserpassword( resetpassword.getuname(), resetpassword.getpassword(), token); if (response.getpasswordresetresult() == passwordresetresult.successful) { // todo: worked, now? return "redirect:/login"; } else if (response.getpasswordresetresult() == passwordresetresult.invalid_token) { // todo: bad token return "redirect:/resetpassword?token="+token+"&msg=badtoken"; } else if (response.getpasswordresetresult() == passwordresetresult.out_of_policy_pw) { // todo: out of policy pw return "redirect:/resetpassword?token="+token+"&msg=outofpolicy"; } else if (response.getpasswordresetresult() == passwordresetresult.ldap_failure) { // todo: other failure return "redirect:/resetpassword?token="+token+"&msg=error"; } } return "redirect:/resetpassword?token="+token+"&msg=error"; //return new redirectview("resetpassword?token=\"\"&msg=notoken"); }
so tried bunch of things nothing seems work. here happen when view requested /resetpassword?token=1232453 view displayed. if form has errors url parameter persists in url , form displays errors. right error saying template cannot resolved. ok fair enough, tried doing redirect instead
return "redirect:/resetpassword?token="+token;
and seems work, url parameter lost , view loses bindingresult errors. in code, posted tried flashattributes error "validation failed object='resetpassword'. error count: 4" correct need show form , errors coded thymeleaf. or suggestions great!
resources have looked at: spring - redirect after post (even validation errors) & springmvc controller: how stay on page if form validation error occurs
have tried returning modelandview instead of redirect string? attributes on model available url query parameters.
modelandview redirect = new modelandview("redirect:/resetpassword"); redirect.addobject("token", token); redirect.addobject("msg", "error"); return redirect;