gwooden_코린이
스프링 부트 유효성 검사 본문
728x90
어노테이션으로 간편하게 유효성 검사를 해준다.
@NotEmpty(message = "보여줄 메세지 입력")
@Size(max = 100) //최대 100바이트 까지 허용 가능 min도 있음
package com.example.sb.question;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class QuestionForm {
@NotEmpty(message = "제목을 입력하세요.")
@Size(max = 200)
private String subject;
@NotEmpty(message = "내용을 입력하세요.")
private String content;
}
@Valid QuestionForm : html에서 입력한 내용이 객체 저장된다.
BindingResult : 검사한 결과를 저장하는 객체
@GetMapping("/create")
public String questionCreate(QuestionForm questionForm) {
return "question_form";
}
@PostMapping("/create")
public String questionCreate(@Valid QuestionForm questionForm, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "question_form";
}
//입력한 질문제목과 내용을 Question 테이블에 추가 하는 코드
questionService.create(questionForm.getSubject(), questionForm.getContent());
return"redirect:/question/list";
}
<html layout:decorate="~{layout}">
<div layout:fragment="content" class="container">
<h5 class="my-3 border-bottom pb-2">질문등록</h5>
<form th:action="@{/question/create}" th:object="${questionForm}" method="post">
<div class="alert alert-danger" th:if="${#fields.hasAnyErrors()}">
<div th:each="err : ${#fields.allErrors()}" th:text="${err}"></div>
</div>
<div class="mb-3">
<label for="subject" class="form-label">제목</label>
<input type="text" id="subject" th:field="*{subject}" class="form-control">
</div>
<div class="mb-3">
<label for="content" class="form-label">내용</label>
<textarea id="content" th:field="*{content}" class="form-control" rows="10"></textarea>
</div>
<input type="submit" value="저장하기" class="btn btn-primary my-2">
</form>
</div>
</html>
폼 태그에 th:object=""를 사용하고 인풋태그에 name 속성 없이 입력값을 처리할 수 있다. 이때 인풋태그에는 th:field를 같이 사용해 주면된다. 오브젝트와 필드 이 2가지를 같이 사용해야 가능하
728x90
'스프링 부트' 카테고리의 다른 글
스프링 부트 추천기능 구현해보기 (0) | 2023.02.17 |
---|---|
스프링 부트 시큐리티 + H2-CONSOLE (0) | 2023.02.15 |
스프링 부트 타임리프 사용해보기 (0) | 2023.02.14 |
스프링 부트 DAO Respository (0) | 2023.02.13 |
스프링 부트 DB구축을 위한 JPA 활용 (0) | 2023.02.13 |
Comments