Spring Boot3 & Spring Framework 6 강의 ::Section.7 Spring Boot Starter Validation을 이용하여 검증 추가하기

suragryen·2024년 2월 29일
0

Udemy-Spring

목록 보기
12/25

1.pom.xml 추가

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>
  1. todo.java
	private int id;
	private String username;
	@Size(min = 10, message="Enter at Enter at least 10 character")
	private String description;
	private LocalDate targetDate; 
	private boolean done;
	
	
  • Validation을 추가 해주고 싶은 필드 위에 @Size 어노테이션을 추가 해 준다

  • Size 말고도 여러 Validation들을 추가 해 줄 수 있다!

  1. controller.java
@RequestMapping(value="add-todo", method = RequestMethod.POST)
	public String addNewTodo(//@RequestParam String description,
								ModelMap model, @Valid Todo todo) {
		
		String username = (String)model.get("name");
		todoService.addTodo(username, todo.getDescription(), LocalDate.now().plusYears(1), false);
		
		return "redirect:list-todos";
	}
  • @Valid 어노테이션을 추가해준다

  • 에러 페이지와 함께 내가 설정해 준 메세지가 뜬다 하지만 에러페이지를 사용자에게 보여줄것은 아니기 때문에 다른 설정을 해준다.
  1. controller.java
	@RequestMapping(value="add-todo", method = RequestMethod.POST)
	public String addNewTodo(//@RequestParam String description,
								ModelMap model, @Valid Todo todo, BindingResult result) {
		
		if(result.hasErrors()) {
			return "todo";
		}
		
		String username = (String)model.get("name");
		todoService.addTodo(username, todo.getDescription(), LocalDate.now().plusYears(1), false);
		
		return "redirect:list-todos";
	}
  • BindingResult를 추가해주고 에러가 있을경우 todo 페이지에서 못나가게 막아준다.
  1. view
	<div class="container">
		<h1>Enter Todo Details</h1>
		<form:form method="post" modelAttribute="todo"> <!-- controller의 todo -->
			Description: <form:input type="text" path="description" required="required"/>
			<form:errors path="description" required="required" cssClass="text-warning"/>
			<form:input type="hidden" path="id"/>
			<form:input type="hidden" path="done"/>
			<input type="submit" class="btn btn-success"/>
		</form:form>
	</div>
  • <form:errors path="description" required="required" cssClass="text-warning"/>
    에러메세지를 form:errors 로 처리해준다

  • HTML 태그가 아닌 스프링 태그이기 때문에 cssClass를 추가해서 부트스트랩을 적용한다

적용성공!

자바스크립트보다 훨씬 편리해보이고 코드도 적은데
앞으로의 프로젝트에 적용해서 자바스크립트 validation과 비교해봐야겠다

profile
블로그 이사중 ☃︎

0개의 댓글

관련 채용 정보