Lonely Snowman
 

[Spring] 입력값 검증

스프링 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 형식이다