개발가능구역

[ IntelliJ ] Validation 유효성 검사 본문

SpringBoot/IntelliJ

[ IntelliJ ] Validation 유효성 검사

oosomall 2025. 9. 26. 15:58
반응형

 

 

 

사용 클래스 : Controller, Service, DTO, Entity

사용 인터페이스 : Service 구현, Repository

사용 DB : ORACLE

UI : HTML, Thymeleaf

 

 


 

 

implementation 'org.springframework.boot:spring-boot-starter-validation'

build.gradle 에 validation 추가하고, 오른쪽에 코끼리 나오니 그걸 눌러줍니다.

 

 


 

DTO

@Setter @Getter
public class MemberDTO {

    @NotBlank
    @Size(min = 4, max = 12)
    @Pattern(regexp = "^[a-zA-Z0-9]", message = "아이디는 영문자와 숫자 조합, 4자 이상 12자 이하만 가능합니다.")
    private String id;
    private String pw;
    private String nickname;
    private String phone;
    private String madress;

}

@NotBlank : 빈 문자열, null 불가 → 입력이 무조건 있어야 한다.

@Size(min = 4, max = 12) : 최소 4자, 최대 12자 / 여기에 message 붙여도 된다.

@Pattern(regexp = " . . . ") : 문자 제한 걸어둔다.

- message : UI에 입력시킬 문자

 


 

Controller

@GetMapping("/sign_up")
public String signup01(Model model) {
    model.addAttribute("memberDTO", new MemberDTO());
    return "member/signup";
}

@PostMapping("/signup_save")
public String signup02(@Valid MemberDTO dto, BindingResult bindingResult, Model model) {
    if (bindingResult.hasErrors()) {
        return "member/signup";
    }

    service.save(dto);
    return "redirect:/";
}

GET / signup01 : Thymleaf 폼과 DTO 연결하고, 아까 message에 입력한 값을 화면에 보여주기 위해 Model 로 DTO 정의.

POST / signup02 : 

  1. @Valid : DTO 검증 수행.
  2. BindingResult : 검증 결과 저장.
  3. hasErrors() : 에러가 있다면~ 
  4. if ( bindingResult.hasErrors() ) :
  • 아까 조건 건 것에 문제가 있다면, 조건이랑 부합하지 않다면 다시 입력창으로 되돌린다.
  • 아니면 service.save(dto) 로 넘겨서 잘 저장한다.

 


 

UI

<form th:action="@{/signup_save}" th:object="${memberDTO}" method="post">
    <div>
        <label>ID: </label>
        <input type="text" th:field="*{id}" />
        <p th:if="${#fields.hasErrors('id')}" th:errors="*{id}"></p>
    </div>

th:object : 아까 Controller / signup01 에서 보낸 message 정보를 가져온다

th:field = " *{id} " : DTO의 id 필드와 연결시킴

<p th:if="${#fields.hasErrors('id')}" th:errors="*{id}"></p> : 검증 오류가 있으면 메시지 글로 표시한다.

 

 


 

 

이제 출력을 해보면

 

 


 

 

 

 

 

꾸미는 건 언젠가 꼭..!

반응형