스프링 MVC는 Bean(자바빈 클래스, ArticleVO) Validation(유효성검사) 기능을 이용해 요청 파라미터 값이 바인딩된(멤버변수에 세팅된) 도메인 클래스(ArticleVO)의 입력값 검증을 한다
pom.xml에 의존성 추가해 준다
https://mvnrepository.com/artifact/org.hibernate/hibernate-validator
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.5.Final</version>
</dependency>
public class Member {
@NotBlank
private String userId;
@NotBlank(message = "사용자명을 입력해주세요")
@Size(max = 3, message = "최대 3글자까지만 작성해주세요")
private String userName;
private String password = "1234";
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date regDate;
private int coin;
private String enabled;
private String gender;
private Map<String, String> genderCodeMap;
@NotBlank(message = "이메일주소를 입력해주세요")
@Email(message = "올바른 이메일주소를 입력해주세요")
private String email;
private String birthDay;
private String nationality;
private Map<String, String> notionalityCodeMap;
private String cars;
private String[] carArray;
private ArrayList<String> carList;
private Map<String, String> carMap;
private String hobby;
private String[] hobbyArray;
private ArrayList<String> hobbyList;
private Map<String, String> hobbyMap;
private String developer;
private boolean foreigner;
private String introduction;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Past(message = "과거 날짜를 입력해주세요")
private Date dateOfBirth;
@Valid
private Address address;
@Valid
private List<Card> cardList;
private MultipartFile picture;
private MultipartFile[] pictures;
private List<MemberAuthVO> memberAuthVOList;
}
각 프로퍼티에 어노테이션으로 입력값 검증 규칙을 지정해 준다
하나의 프로퍼티에 여러 개의 입력값 검증 규칙을 지정할 수도 있다
중첩된 자바빈즈와 자바빈즈의 컬렉션에서 정의한 프로퍼티에 대해 입력값 검증을 할 때는 @Valid를 지정하고 해당 VO에서 또 검증 규칙 지정한다
- NotNull : 빈 값 체크(int타입)
- NotBlank : null 체크, trim후 길이가 0인지 체크(String타입)
@PostMapping("/registerForm01Post")
public String registerForm01Post(
@Validated Member member,
BindingResult brResult) {
}
메서드 매개변수에 도메인 클래스를 정의하고 @Validated를 지정한다
입력값 검증 대상의 도메인 클래스 직후에 BindingResult를 정의한다
BindingResult에는 요청 데이터의 바인딩 오류와 입력값 검증 오류 정보가 저장된다
<form:input path="userId" placeholder="아이디" />
<code><form:errors path="userId" /></code>
jsp파일에는 에러메시지를 표시할 스프링 폼 에러 태그를 써준다
어노테이션에 message 속성을 따로 지정하지 않으면 기본 메시지가 뜬다
더보기
form에서 date타입을 달력으로 선택하면 yyyy-MM-dd 형식이다