본문 바로가기
Thymeleaf

14. Thymeleaf의 유효성 검증 - 1

by leo2114 2024. 2. 24.
반응형

폼 입력 유효성 검증

폼 입력 유효성 검증은 사용자로부터의 입력값이 올바른 형식과 범위에 있는지 확인하는 과정입니다. 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의 폼 바인딩 및 필드 오류 처리 기능을 사용하여 유효성 검증 결과를 화면에 표시합니다.

반응형