Chào các bạn, hôm nay anh sẽ trình bày kỹ thuật để kiểm tra dữ liệu (Spring Validation) người dùng nhập vào có đúng như định dạng mình mong muốn không ? Nếu không đúng định dạng mình sẽ thông báo lỗi cho người dùng? Trong Spring thì mình dùng các cách nào để kiểm tra dữ liệu người dùng truyền lên là hợp lệ.
Cái quý giá và quan trọng nhất đối với một phần mềm đó chính là dữ liệu, thông tin về dữ liệu. Như các em thấy facebook hay google họ nắm giữ một lượng người dùng khá lớn, dựa vào nguồn dữ liệu đó họ sẽ phát triển các kế hoạch dài hạn và tăng doanh thu cho công ty. Chính vì vậy nắm được dữ liệu sẽ là yếu tố quyết định cho sự thành công. Để đảm bảo dữ liệu phải nhập đúng định dạng ví dụ như ngày tháng năm phải theo chuẩn la dd/MM/YYYY hoặc trường dữ liệu bắt buộc người dùng nhập vào thì ta sử dụng Spring Validation để làm việc đó. Khi người dùng nhập sai định dạng chúng ta yêu cầu thì hệ thống thông báo lỗi để người dùng nhập lại.
- Bước 1 : Nhúng thư viện vào trong file pom
- Bước 2 : Thiết lập ràng buộc dữ liệu trong Entity
Như ta thấy mình sử dụng các annotation có sẵn như @NotBlank để ràng buộc không được phép rỗng cho giá trị name.
- Bước 3 : Sử dụng trong controller
Trong ví dụ sau anh sẽ sử dụng Restful Webservice .
Như ta thấy trong đoạn code trên ta sử dụng @Valid để kiểm tra dữ liệu người dùng truyền lên có thảo mảng điều kiện ta thiết lập trong Entity User không ? Khi tham số trong controller có annotation @Valid nó sẽ tự động bật chế độ kiểm tra dữ liệu theo chuẩn JSR 380 cái mà cài đặt chức năng kiểm tra trong thư viện Hibernate Validator để kiểm tra giá trị.
Chúng ta có thể sử dụng annotation @ExceptionHandler cho phép chúng ta bắt lỗi dữ liệu cho từng method.
- @NotNull – kiểm tra giá trị null
- @AssertTrue – kiểm tra giá trị thuộc tính là true
- @Size – kiểm tra độ dài min and max
- @Min – kiểm tra giá trị nhỏ nhất
- @Max – Kiểm tra giá trị lớn nhất
- @Email – kiểm tra email có hợp lệ
- @NotEmpty – kiểm tra không được trống và empty
- @NotBlank – kiểm tra giá trị không được null hoặc khoảng trắng
- @Positive and @PositiveOrZero – kiểm tra chỉ được phép là số nguyên dương từ 0 trở đi
- @Negative and @NegativeOrZero – kiểm tra số âm
- @Past and @PastOrPresent – kiểm tra ngày từ quá khứ đến hiện tại.
- @Future and @FutureOrPresent – kiểm tra ngày từ hiện tại đến tương lai
Trong ví dụ sau anh sẽ tạo một annotation riêng tên @Author là để kiểm tra trường name phải nhập vào giá trị tên mà anh mong muốn nến trường name chứa đựng giá trị anh không mong muốn thì sẽ báo lỗi như sau.
Tiếp đến anh định nghĩa của @Author như sau
Và cuối cùng anh định nghĩa thế nào là hợp lệ là đúng. Như ví dụ dưới đây anh định nghĩa trường tên tác giả truyền vào phải nằm trong danh sách mà anh định nghĩa là “Santideva”, “Marie Kondo”, “Martin Fowler”, “levunguyen”. Nếu tên tác giả không nằm trong danh sách này thì xem như không hợp lệ và trả về lỗi
Chúng ta có thể sử dụng các annotation sẵn có hoặc có thể tự định nghĩa một cái cho phù hợp với ứng dụng của mình.