폼 입력 유효성 검증
폼 입력 유효성 검증은 사용자로부터의 입력값이 올바른 형식과 범위에 있는지 확인하는 과정입니다. Thymeleaf를 사용하여 웹 애플리케이션에서 폼 입력 유효성 검증을 수행하는 방법을 알아보겠습니다.
1. 필수 입력 필드 검증
가장 일반적인 유효성 검증 중 하나는 필수 입력 필드를 확인하는 것입니다. Thymeleaf에서는 required 속성을 사용하여 필수 입력 필드를 지정할 수 있습니다.
<form action="/submitForm" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<button type="submit">Submit</button>
</form>
위의 예제에서는 사용자명 필드에 required 속성을 추가하여 사용자가 반드시 이 필드를 입력해야 함을 명시하고 있습니다.
2. 데이터 형식 유효성 검증
Thymeleaf를 사용하여 입력된 데이터의 형식을 검증할 수도 있습니다. 예를 들어, 이메일 주소나 숫자 형식의 데이터를 검증하는 경우가 있습니다.
<form action="/submitForm" method="post">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<button type="submit">Submit</button>
</form>
위의 예제에서는 이메일 주소 필드에 type="email" 속성을 추가하여 브라우저가 입력된 값이 유효한 이메일 주소인지 자동으로 검증하도록 설정하고 있습니다.
3. 사용자 정의 유효성 검증
때로는 사용자 정의 유효성 검증이 필요할 수 있습니다. 이를 위해 Thymeleaf에서는 JavaScript를 사용하여 사용자 정의 유효성 검증을 구현할 수 있습니다.
<form action="/submitForm" method="post" onsubmit="return validateForm()">
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<button type="submit">Submit</button>
</form>
<script>
function validateForm() {
var password = document.getElementById("password").value;
if (password.length < 8) {
alert("Password must be at least 8 characters long");
return false;
}
return true;
}
</script>
위의 예제에서는 JavaScript 함수를 사용하여 비밀번호가 최소 8자 이상이어야 한다는 조건을 검증하고 있습니다. 사용자가 제출하기 전에 이 유효성 검증이 수행되어 올바르지 않은 데이터가 전송되는 것을 방지할 수 있습니다.
4. 코드 예제
다음은 Thymeleaf를 사용하여 폼 입력 유효성 검증을 구현한 간단한 예제입니다.
@Controller
public class FormValidationController {
@GetMapping("/form")
public String showForm(Model model) {
model.addAttribute("user", new User());
return "form";
}
@PostMapping("/submitForm")
public String submitForm(@Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
// 폼 데이터 처리 로직
return "success";
}
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Form Validation</title>
</head>
<body>
<h1>Form Validation</h1>
<form action="/submitForm" method="post" th:object="${user}">
<label for="username">Username:</label>
<input type="text" id="username" name="username" th:field="*{username}" required>
<span th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></span><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" th:field="*{email}" required>
<span th:if="${#fields.hasErrors('email')}" th:errors="*{email}"></span><br>
<button type="submit">Submit</button>
</form>
</body>
</html>
위의 예제에서는 Thymeleaf를 사용하여 폼 입력 필드에 필수 입력 및 데이터 형식 유효성 검증을 구현하고 있습니다. 컨트롤러에서는 @Valid 어노테이션을 사용하여 유효성 검증을 수행하고, 발생한 오류를 BindingResult 객체를 통해 처리합니다. 페이지에서는 Thymeleaf의 폼 바인딩 및 필드 오류 처리 기능을 사용하여 유효성 검증 결과를 화면에 표시합니다.
'Thymeleaf' 카테고리의 다른 글
18. Thymeleaf와 Spring Framework의 통합 - 3 (0) | 2024.02.24 |
---|---|
17. Thymeleaf와 Spring Framework의 통합 - 2 (0) | 2024.02.24 |
16. Thymeleaf와 Spring Framework의 통합 - 1 (0) | 2024.02.24 |
15. Thymeleaf의 유효성 검증 - 2 (0) | 2024.02.24 |
13. Thymeleaf의 객체와 컨트롤러와의 상호작용 - 3 (0) | 2024.02.24 |
12. Thymeleaf의 객체와 컨트롤러와의 상호작용 - 2 (0) | 2024.02.24 |
11. Thymeleaf의 객체와 컨트롤러와의 상호작용 - 1 (0) | 2024.02.24 |
10. Thymeleaf 템플릿 - 3 (0) | 2024.02.24 |