Spring
Spring @Valid와 BindingResult 파라미터
keepgoing
2021. 12. 21. 20:20
@Valid
필드 값을 기본 값으로 가져가고 싶을 때, Controller에 @Valid 어노테이션을 선언할 수 있다.
//@Valid 예시
@PostMapping("/members/new")
public String create(@Valid MemberForm form){
Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode());
Member member = new Member();
member.setName(form.getName());
member.setAddress(address);
memberService.join(member);
return "redirect:/";
}
//NotEmpty Valid
@NotEmpty(message = "회원 이름은 필수 입니다.")
private String name;
만약 위와 같이 선언했는데, 폼에서 이름을 입력하지 않는다면 에러를 발생시킨다.
BindingResult 파라미터
//BindingResult 파라미터 예시
@PostMapping("/members/new")
public String create(@Valid MemberForm form, BindingResult result){
if(result.hasErrors()){
return "members/createMemberForm";
}
Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode());
Member member = new Member();
member.setName(form.getName());
member.setAddress(address);
memberService.join(member);
return "redirect:/";
}
위는 BindingResult 파라미터를 이용해 만약 에러가 발생한다면 "members/createMemberForm" 화면으로 넘어가도록 설정해준것이다.