Hướng dẫn validation trong Spring MVC 5 sẽ hướng dẫn các bạn validation sử dụng những annotation như @NotNull, @Size, @Min, @Max, @Email, @Pattern

Các bạn có thể tự hỏi sự cần thiết của validation là gì? Nếu bạn có một form và bạn muốn rằng một số field bắt người dùng phải nhập, số phải lớn hơn 18, email và ngày sinh phải đúng định dạng, …

Đây là lúc chúng ta phải validation dữ liệu ngay từ phía client trước khi gửi dữ liệu về phía server xử lý.

Hướng dẫn validation trong Spring MVC 5 – Các bước thực hiện

1/ Tạo một Maven Web Application Project

Các bạn có thể tạo mới một Project. Trong bài hướng dẫn này, chúng tôi sử dụng lại project của bài Hướng dẫn tạo màn hình đăng ký với Spring MVC 5

2/ Mở file pom.xml và thêm dependency

<!-- Hibernate Validator -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.4.1.Final</version>
        </dependency>

3/ Tạo một model tên Customer

Nhập code cho Customer

4/ Tạo một controller tên CustomerController

Nhập code cho CustomerController

5/ Tạo một view tên customer-form.jsp bên trong thư mục views

Nhập mã cho customer-form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Đăng ký thông tin khách hàng</title>
<style>
.error {
	color: red
}
</style>
<link href="<c:url value="/resources/css/bootstrap.min.css" />"
	rel="stylesheet">
<script src="<c:url value="/resources/js/jquery-1.11.1.min.js" />"></script>
<script src="<c:url value="/resources/js/bootstrap.min.js" />"></script>
</head>
<body>
	<div class="container">
		<div class="col-md-12">
			<h4 class="text-center">Điền thông tin khách hàng. (*) không
				được bỏ trống.</h4>
			<div class="panel panel-info">
				<div class="panel-heading">
					<div class="panel-title">Đăng ký tài khoản mới</div>
				</div>
				<div class="panel-body">
					<form:form action="processForm" modelAttribute="customer"
						cssClass="form-horizontal">

						<div class="form-group">
							<label for="firstName" class="col-md-3 control-label">Họ:</label>
							<div class="col-md-9">
								<form:input path="firstName" cssClass="form-control" />
							</div>
						</div>

						<div class="form-group">
							<label for="lastName" class="col-md-3 control-label">Tên
								(*):</label>
							<div class="col-md-9">
								<form:input path="lastName" cssClass="form-control" />
								<form:errors path="lastName" cssClass="error" />
							</div>
						</div>

						<div class="form-group">
							<label for="lastName" class="col-md-3 control-label">Free
								passes (*)</label>
							<div class="col-md-9">
								<form:input path="freePasses" cssClass="form-control" />
								<form:errors path="freePasses" cssClass="error" />
							</div>
						</div>

						<div class="form-group">
							<label for="lastName" class="col-md-3 control-label">Email
								(*)</label>
							<div class="col-md-9">
								<form:input path="email" cssClass="form-control" />
								<form:errors path="email" cssClass="error" />
							</div>
						</div>

						<div class="form-group">
							<label for="lastName" class="col-md-3 control-label">Postal
								Code:</label>
							<div class="col-md-9">
								<form:input path="postalCode" cssClass="form-control" />
								<form:errors path="postalCode" cssClass="error" />
							</div>
						</div>

						<div class="form-group">
							<!-- Button -->
							<div class="col-md-offset-3 col-md-9">
								<button type="submit" class="btn btn-primary">Đăng ký</button>
								<button type="reset" class="btn btn-primary">Nhập lại</button>
							</div>
						</div>

					</form:form>
				</div>
			</div>
		</div>
	</div>
</body>
</html>

6/ Tạo một view tên customer-confirmation.jsp bên trong thư mục views

Nhập code cho customer-confirmation.jsp

7/ Mở file web.xml và cấu hình encoding UTF-8

Hướng dẫn validation trong Spring MVC 5 – Build, Deploy và Run

1/ Về cách build, deploy và run các bạn tham khảo bài Hướng dẫn tạo project sử dụng Spring MVC 5 với eclipse

2/ Kết quả khi chạy http://localhost:8080/Spring5MVCProject/customer/showForm

Nhập đầy đủ thông tin và đúng định dạng

Chọn Đăng ký

Khi không nhập những thông tin bắt buộc và chọn Đăng ký

2 BÌNH LUẬN

  1. Chào admin ạ, cho e hỏi nếu trường hợp entity trên có chưa khóa ngoại thì sao ạ. Em để anotation @notnull chỗ khóa ngoại đó nó báo ra lỗi của spring ạ “Failed to convert property value of type java.lang.String to required type com.springvalidate.entity.myClass for property foreignKey; nested exception is java.lang.IllegalStateException: Cannot convert value of type java.lang.String to required type com.springvalidate.entity.myClass for property foreignKey: no matching editors or conversion strategy found”.
    Mong admin giúp e với !

    • Bạn có thể sử dụng @OneToMany để thiết lập nhé!

      Ví dụ: Thiết lập khóa ngoại cho bảng User
      @OneToMany(cascade = CascadeType.ALL, mappedBy = “user”, fetch = FetchType.EAGER)
      private Set authorities = new HashSet<>();

BÌNH LUẬN

Please enter your comment!
Please enter your name here