티스토리 뷰
Spring MVC 5-6 유효성 체크
Spring MVC 유효성 체크
서버측 유효성 체크 기능
Validator와 Error 인터페이스 지원
Validator : Command 객체의 유효성을 검증할 때 사용
BoardValidator.java |
public class BoardValidator implements Validator { public boolean supports(Class<?> clazz) { return BoardVO.class.isAssignableFrom(clazz); } public void validate(Object target, Errors errors) { BoardVO board = (BoardVO)target; if(board.getTitle() == null || board.getTitle().trim().isEmpty()){ errors.rejectValue("title", "required"); } if(board.getWriter() == null || board.getWriter().trim().isEmpty()){ errors.rejectValue("writer", "required"); } if(board.getContent() == null || board.getContent().length() <= 10){ errors.rejectValue("content", "board.content"); } } } |
ValidationUtils 활용
Errors 인터페이스 이용보다 보다 쉽게 처리 가능
BoardValidator.java |
public class BoardValidator implements Validator { public boolean supports(Class<?> clazz) { return BoardVO.class.isAssignableFrom(clazz); } public void validate(Object target, Errors errors) { BoardVO boardCommand = (BoardVO)target; ValidationUtils.rejectIfEmptyOrWhitespace(errors, "title", "required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "writer", "required"); if(boardCommand.getContent().length() <= 10){ errors.rejectValue("content", "board.content"); } } } |
validator 적용하기
Controller 클래스 내의 메서드에 BindingResult 타입의 파라미터가 추가되어야 함.
AddBoardController.java |
@Controller @RequestMapping("/addBoard.do") public class AddBoardController { @RequestMapping(method=RequestMethod.POST) public String addBoard(@ModelAttribute("board") BoardVO vo, BindingResult rs){ new BoardValidator().validate(vo, result); if(rs.hasErrors()){ return "addBoard.jsp"; } boardService.addBoard(board); return "redirect:getBoardList.do"; } } |
에러 메시지 처리
에러메시지 문자열은 resource에 작성하고 Spring 설정 정보에 messageSource Bean을 등록한다.
applicationContext.xml |
<beans ...> <bean id="errorMessageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>message.messageSource</value> </list> </property> </bean> </beans> |
에러 메시지 처리 – 이어서
에러메시지 형식
message=로그인
message.user.id=아이디
message.user.password=비밀번호
user.id=아이디는 필수 입력항목입니다.
user.password=비밀번호는 필수 입력항목입니다.
board.title=제목은 필수 입력항목입니다.
board.writer=작성자는 필수 입력항목입니다.
board.content=내용은 10글자 이상 작성해주세요.
에러메시지는 다국어 처리할 수 있음
에러 메시지 처리 – 이어서
<form:errors /> 커스텀 태그를 이용해 에러 메시지 출력
addBoard.jsp |
<%@page contentType="text/html; charset=EUC-KR"%> <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> ...... <spring:hasBindErrors name="board"/> ...... <tr> <td>제목</td><td><input type="text" name="title"/> <form:errors path="board.title"/></td> </tr> <tr> <td>작성자</td><td><input type="text" name="writer" size="10"/> <form:errors path="board.writer"/></td> </tr> <tr> <td>내용</td><td><textarea name="content" cols="40" rows="10"></textarea> <form:errors path="board.content"/></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="새글 등록"/></td> </tr> ...... |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- #면접준비
- #경찰공무원
- #경찰승진
- #2025트렌드
- #경찰채용
- #경찰되는법
- #sbs드라마
- #학원물
- #9급공무원
- #체력시험
- #판매순위
- #경찰
- #자동차판매순위
- #ev추천
- #하이틴드라마
- #순경월급
- #경찰수당
- #경력경쟁채용
- #경찰월급
- #정보처리기사
- #경찰시험
- #기대작드라마
- #공무원시험
- #김혜인
- #티빙
- #7급공무원
- #경찰연봉
- #의무경찰
- #웨이브
- #스릴러드라마
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함