빈 검증 - 내 정보 수정
컨트롤러의 요청 핸들러에 빈 검증 로직을 추가한다. 요청 핸들러의 매개 변수 리스트에서 @Valid User user 다음은 곧이어 BindingResult bindingResult를 선언해야 한다.
UsersController.java
RequestMapping(value="/editAccount",method=RequestMethod.POST) public String editAccount(@Valid User user, BindingResult bindingResult, Principal principal) { if (bindingResult.hasErrors()) { return "users/editAccount"; } //user.setEmail(principal.getName()); int check = userService.editAccount(user); if (check != 1) { throw new RuntimeException(WebContants.EDIT_ACCOUNT_FAIL); } return "redirect:/users/changePasswd"; }
JSP 파일을 아래를 참조해 수정한다. <sf:errors> 태그는 사용자에게 검증 에러를 표시하는 스프링 폼 태그이다.
editAccount.jsp
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %> <sf:form id="editAccountForm" action="editAccount" method="post" modelAttribute="user" onsubmit="return check();"> <sf:errors path="*" cssClass="error" /> <table> <tr> <td>이름(Full Name)</td> <td> <sf:input path="name" /><br /> <sf:errors path="name" cssClass="error" /> </td> </tr> <tr> <td>손전화(Mobile)</td> <td> <sf:input path="mobile" /><br /> <sf:errors path="mobile" cssClass="error" /> </td> </tr> <tr> <td>현재 비밀번호(Password)</td> <td> <sf:password path="passwd" /><br /> <sf:errors path="passwd" cssClass="error" /> </td> </tr> <tr> <td colspan="2"><input type="submit" value="전송" /></td> </tr> </table> </sf:form>
테스트 화면
로그인 후, 내 정보 수정 화면에서 기존 정보 값을 모두 지우고 전송한다.
- 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
- 예제로 쉽게 배우는 스프링 프레임워크 3.0(한빛미디어) - 사카타 코이치
- Spring in Action(Jpub) - 크레이그 월즈
- spring-framework-reference.pdf
- MyBatis Getting started