Bài đăng nổi bật

Bài toán

Trong phần này chúng ta sẽ phát triển Chức năng cho phép nhập vào thông tin người dùng và hiển thị các thông báo tương ứng với giá trị của các trường dữ liệu.
Yêu cầu đối với dữ liệu người dùng bao gồm:
    Tên bắt buộc, có độ dài tối thiểu là 2 ký tự, tối đa là 30 ký tự
    Tuổi bắt buộc, có giá trị nhỏ nhất là 18

Hướng dẫn

Bước 1: Tạo project Gradle với tên spring-validation
Bước 2: Thêm springframeword và validation dependencies trong file build.grade
// https://mvnrepository.com/artifact/org.springframework/spring-webmvc
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.7.RELEASE'
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.0'

// https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring5
compile group: 'org.thymeleaf', name: 'thymeleaf-spring5', version: '3.0.9.RELEASE'

// https://mvnrepository.com/artifact/org.hibernate/hibernate-validator
compile group: 'org.hibernate', name: 'hibernate-validator', version: '6.1.0.Final'

// https://mvnrepository.com/artifact/javax.validation/validation-api
compile group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'

Bước 3:Tạo cấu trúc thư mục trong thư mục src/main như sau



Bước 4: Cấu hình ứng dụng
Bước 5: Tạo class User trong thư mục model như sau:
@NotEmpty: không để trống
@Size(min = 2, max = 30): độ dài từ 2 đến 30
@Min(18): Giá trị nhỏ nhất là 18

package com.codelean.model;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class User {

   
@NotNull
    @Size
(min=2, max=30)
   
private String name;

   
@NotNull
    @Min
(18)
   
private Integer age;

   
public String getName() {
       
return this.name;
    }

   
public void setName(String name) {
       
this.name = name;
    }

   
public Integer getAge() {
       
return age;
    }

   
public void setAge(Integer age) {
       
this.age = age;
    }

   
public String toString() {
       
return "Person(Name: " + this.name + ", Age: " + this.age + ")";
    }
}
Code tham khảo: User

Bước 6: Tạo controller UserController
Thêm @Validated @ModelAttribute("user") User user để xác thực Model User
Thêm
BindingResult bindingResult giữ kết quả xác nhận và ràng buộc User có xảy ra lỗi không.
package com.codelean.controller;

import com.codelean.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller("/")
public class UserController {
   
@GetMapping("/user-validate")
   
public String showForm(Model model){
        model.addAttribute(
"user", new User());
       
return "uservalidate";
    }

   
@PostMapping("/user-validate")
   
public String checkValidation (@Validated @ModelAttribute("user") User user, BindingResult bindingResult){
        
if (bindingResult.hasFieldErrors()){
           
return "uservalidate";
        }
       
return "result";
    }

}
Code tham khảo: UserController
Bước 7: Trong thư mục views tạo file uservalidate.html
<!DOCTYPE html>
<
html xmlns:th="http://www.thymeleaf.org">
<
head>
    <
title>User Validation</title>
</
head>
<
body>
<
form th:object="${user}" method="post">
    <
table>
        <
tr>
            <
td>Name:</td>
            <
td><input th:field="*{name}"></td>
            <
td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td>
        </
tr>
        <
tr>
            <
td>Age:</td>
            <
td><input th:field="*{age}"></td>
            <
td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Age Error</td>
        </
tr>
        <
tr>
            <
td>
                <
button type="submit">Submit</button>
            </
td>
        </
tr>
    </
table>
</
form>
</
body>
</
html>
Code tham khảo: uservalidate.html
Bước 8: Trong thư mục views tạo file result.html
<html>
<
head>
    <
title>Congratulations</title>
</
head>
<
body>
<
h1>Congratulations! You are old enough to sign up for this site.</h1>
</
body>
</
html>

Code tham khảo: result.html

Bước 9: Cấu hình chạy ứng dụng
Cấu hình Artifact: Web Application: Exploded
Cấu hình Tomcat  
Bước 10: Chạy ứng dụng ta được views như sau

Nhập dữ liệu sai validate ta có thông báo
Nhập dữ liệu đúng ta đi tới trang result


Mã nguồn đầy đủ tham khảo tại: https://github.com/CodeLean-VN/spring-validation-simple

CodeLean.vn

Facebook: CodeLean Community

Post a Comment

Mới hơn Cũ hơn