728x90
/* Validation */
implementation 'org.springframework.boot:spring-boot-starter-validation'
위는 gradle 용 dependency로 validation dependency를 이용할 수 있다.
/* 객체 설정*/
@Getter
@Setter
@Entity
public class Todo {
@NotNull
private int id;
@NotBlank(message = "유저명은 필수 입력 값입니다")
private String userName;
@Size(min = 10, message = "열글자 이상 입력하세요")
private String description;
private LocalDate localDate;
private boolean done;
}
위와 같은 객체를 생성 해보았다.
/* 컨트롤러 설정*/
@Controller
public class TodoController{
@GetMapping("/add-todo")
public String showNewTodo(ModelMap modelMap){
modelMap.addAttribute("todo",new Todo());
return "addTodo";
}
@PostMapping("/add-todo")
public String addNewTodo(@Valid @ModelAttribute("todo")Todo todo, BindingResult result){
if(result.hasErrors()){
return "addTodo";
}
todoService.addTodo("user",todo.getDescription(), LocalDate.now(), false);
return "redirect:/list-todos";
}
}
컨트롤러에서 객체 앞에 @Valid를 사용할 수 있다. 나는 BindingResult라는 객체를 패러미터로 넣고 result.hasErrors()를 통해 validation 검사를 한다.
/* Thymeleaf 설정 에러 표시*/
<form th:object="${todo}" method="post">
<p th:if="${#fileds.hasErrors('description')}" th:errors="*{description}"></p>
</form?
위 부분은 Todo 객체의 description의 validation에 이상이 있을시 message에 써뒀던 내용으로 에러 표시를 한다.
/* Validation 종류*/
@Null | null만 허용 |
@NotNull | "", " "는 허용하되, Null은 허용 안함 |
@NotEmtpy | " "는 허용하되, Null과 ""는 허용 안함 |
@NotBlank | null, "", " " 모두 허용하지 않는다 |
@Pattern(regexp = ) | 정규식 검사 |
@Size(min=, max=) | 길이를 제한 |
@Max(value = ) | value 이하의 값만 허용 |
@Min(value = ) | value 이상의 값만 허용 |
@Positive | 값을 양수로 제한 |
@PositiveOrZero | 값을 양수와 0으로 제한 |
@Negative | 값을 음수로 제한 |
@NegativeOrZero | 값을 음수와 0으로 제한 |
@Future | Now 보다 미래의 날짜, 시간 |
@FutureOrPresent | Now 혹은 미래의 날짜, 시간 |
@Past | Now 보다 과거의 날짜, 시간 |
@PastFutureOrPresent | Now 혹은 과거의 날짜 시간 |
728x90
'백엔드' 카테고리의 다른 글
[Spring Boot] RestAPI - ResponseEntity, Hateoas (1) | 2024.01.04 |
---|---|
[Spring Boot] 메시지 국제화 (Internationalization) (0) | 2024.01.02 |
[Spring Boot] Spring JDBC (0) | 2023.12.16 |
[Spring Boot] @ConfigurationProperties (0) | 2023.12.16 |
[Spring Boot] 컴포넌트와 빈 차이 (Component vs Bean) (1) | 2023.12.01 |