Bean Validation - Change Password
A password class is required to enable bean validation for passwords.
Password.java
package net.java_school.user; import javax.validation.constraints.Size; public class Password { @Size(min=4, message="The password must be at least 4 characters long.") private String currentPasswd; @Size(min=4, message="The password must be at least 4 characters long.") private String newPasswd; public String getCurrentPasswd() { return currentPasswd; } public void setCurrentPasswd(String currentPasswd) { this.currentPasswd = currentPasswd; } public String getNewPasswd() { return newPasswd; } public void setNewPasswd(String newPasswd) { this.newPasswd = newPasswd; } }
UsersController.java
@RequestMapping(value="/changePasswd", method=RequestMethod.GET) public String changePasswd(Principal principal, Model model) { User user = userService.getUser(principal.getName()); model.addAttribute("user", user); model.addAttribute("password", new Password()); return "users/changePasswd"; } @RequestMapping(value="/changePasswd", method=RequestMethod.POST) public String changePasswd(@Valid Password password, BindingResult bindingResult, Model model, Principal principal) { if (bindingResult.hasErrors()) { User user = userService.getUser(principal.getName()); model.addAttribute("user", user); return "users/changePasswd"; } int check = userService.changePasswd(password.getCurrentPasswd(), password.getNewPasswd(), principal.getName()); if (check < 1) { throw new RuntimeException(WebContants.CHANGE_PASSWORD_FAIL); } return "redirect:/users/changePasswd_confirm"; }
changePasswd.jsp
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %> <sf:form id="changePasswordForm" action="changePasswd" method="post" modelAttribute="password" onsubmit="return check();"> <table> <tr> <td>Current Password</td> <td> <sf:password path="currentPasswd" /><br /> <sf:errors path="currentPasswd" cssClass="error" /> </td> </tr> <tr> <td>Change password</td> <td> <sf:password path="newPasswd" /><br /> <sf:errors path="newPasswd" cssClass="error" /> </td> </tr> <tr> <td>Change password Confirm</td> <td> <input type="password" name="confirm" /> </td> </tr> <tr> <td colspan="2"><input type="submit" value="Submit" /></td> </tr> </table> </sf:form>
On the Change Password screen, press the Submit button without typing anything.
References
- Getting started with Hibernate Validator
- Validation - Empty int field
- http://stackoverflow.com/questions/14715248/simple-springmvc-3-login-doesnt-work
- http://stackoverflow.com/questions/6227547/spring-3-validation-not-working
- http://stackoverflow.com/questions/8909482/spring-mvc-3-ambiguous-mapping-found
- spring-framework-reference.pdf
- MyBatis Getting started