Spring MVC তে Form Handling এবং Validation দুটি গুরুত্বপূর্ণ কনসেপ্ট। ফর্ম ডাটা সঠিকভাবে প্রক্রিয়া করার জন্য Spring MVC ফর্ম ডাটা গ্রহণ, প্রক্রিয়া এবং ভ্যালিডেশন করার জন্য শক্তিশালী সমাধান প্রদান করে। এই অংশে, আমরা একটি Spring MVC অ্যাপ্লিকেশন তৈরি করব যেখানে ফর্ম ডাটা গ্রহণ করা হবে এবং সেগুলি ভ্যালিডেশন করা হবে।
Step 1: Maven Dependencies
Spring MVC ফর্ম হ্যান্ডলিং এবং ভ্যালিডেশনের জন্য প্রয়োজনীয় ডিপেনডেন্সি Maven পম ফাইলে যোগ করুন।
<dependencies>
<!-- Spring Boot Starter Web for MVC functionality -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter Validation for form validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Thymeleaf for rendering the views -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Spring Boot Starter Test for testing purposes -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
spring-boot-starter-validation: এটি Java Bean Validation API (Hibernate Validator) ব্যবহার করে ফর্ম ভ্যালিডেশন এর জন্য প্রয়োজনীয় ডিপেনডেন্সি।spring-boot-starter-web: Spring MVC এবং Tomcat এর জন্য প্রয়োজনীয় ডিপেনডেন্সি।
Step 2: Create Model with Validation Annotations
Spring MVC তে, ফর্ম ভ্যালিডেশন করার জন্য Java Bean Validation এর অ্যানোটেশন ব্যবহার করা হয়, যেমন @NotNull, @Size, @Email ইত্যাদি।
Model Class:
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.Email;
public class User {
@NotBlank(message = "Name is required")
@Size(min = 2, max = 50, message = "Name should be between 2 and 50 characters")
private String name;
@Email(message = "Invalid email format")
@NotBlank(message = "Email is required")
private String email;
@NotBlank(message = "Password is required")
@Size(min = 6, max = 20, message = "Password should be between 6 and 20 characters")
private String password;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@NotBlank: ডাটা ফিল্ডটি ফাঁকা থাকতে পারে না।@Size(min, max): ফিল্ডের দৈর্ঘ্য একটি নির্দিষ্ট রেঞ্জের মধ্যে হতে হবে।@Email: ইমেইল ঠিকানাটি সঠিক ফরম্যাটে থাকতে হবে।
Step 3: Controller for Form Handling and Validation
Spring MVC কন্ট্রোলার ক্লাসে ফর্ম ডাটা গ্রহণ এবং সেগুলি ভ্যালিডেশন করার জন্য @Valid অ্যানোটেশন ব্যবহার করা হয়। এটি BindingResult এর মাধ্যমে ভুল বার্তা প্রক্রিয়া করতে সাহায্য করে।
Controller Class:
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.ui.Model;
import javax.validation.Valid;
@Controller
public class UserController {
@GetMapping("/userForm")
public String showForm(Model model) {
model.addAttribute("user", new User());
return "userForm"; // Display form to the user
}
@PostMapping("/submitForm")
public String submitForm(@Valid User user, BindingResult result, Model model) {
if (result.hasErrors()) {
return "userForm"; // If validation fails, return to the form page
}
model.addAttribute("message", "User details saved successfully!");
return "formSuccess"; // Display success message after successful submission
}
}
@Valid:Userঅবজেক্টের উপর ভ্যালিডেশন চালাতে ব্যবহৃত হয়।BindingResult result: এটি ফর্ম ভ্যালিডেশন ফলাফল ধারণ করে, যা ফর্ম সাবমিট করার পর পাওয়া ত্রুটিগুলি চেক করতে সাহায্য করে।Model model: মডেল ডাটা ফর্মের সাথে যুক্ত করার জন্য ব্যবহৃত হয়।
Step 4: Create the Views
User Form (userForm.html):
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User Form</title>
</head>
<body>
<h2>Enter User Details</h2>
<form action="/submitForm" th:object="${user}" method="post">
<label for="name">Name:</label>
<input type="text" th:field="*{name}" id="name" /><br>
<span th:if="${#fields.hasErrors('name')}" th:errors="*{name}"></span><br>
<label for="email">Email:</label>
<input type="text" th:field="*{email}" id="email" /><br>
<span th:if="${#fields.hasErrors('email')}" th:errors="*{email}"></span><br>
<label for="password">Password:</label>
<input type="password" th:field="*{password}" id="password" /><br>
<span th:if="${#fields.hasErrors('password')}" th:errors="*{password}"></span><br>
<button type="submit">Submit</button>
</form>
</body>
</html>
th:field="*{name}": Thymeleaf টেমপ্লেটে Spring Form এর ফিল্ডের সাথে ডাটা মডেল বাইনডিং করা হয়।th:errors="*{name}": যদি কোনো ত্রুটি থাকে, তবে সেগুলি দেখানো হয়।
Success Page (formSuccess.html):
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Form Submission Success</title>
</head>
<body>
<h2 th:text="${message}"></h2>
</body>
</html>
Step 5: Run the Application
Spring Boot অ্যাপ্লিকেশন চালু করার জন্য:
- Spring Boot অ্যাপ্লিকেশন ক্লাস তৈরি করুন (যদি না থাকে):
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- অ্যাপ্লিকেশন রান করুন:
mvn spring-boot:runঅথবা IDE থেকে রান করুন। - ব্যবহারকারী ফর্মে যান:
http://localhost:8080/userForm
Step 6: Explanation
- Form Handling: ব্যবহারকারী ইনপুট ফর্মে ডাটা পাঠালে, তা কন্ট্রোলারের মাধ্যমে মডেল এবং ভ্যালিডেশন প্রক্রিয়ার মধ্যে যাবে।
- Validation:
@NotBlank,@Size,@Emailইত্যাদি অ্যানোটেশন দ্বারা ফিল্ড ভ্যালিডেশন করা হবে। - Error Handling: যদি ফর্ম ভ্যালিডেশন ব্যর্থ হয়, তবে ত্রুটির বার্তা ব্যবহারকারীকে প্রদর্শন করা হবে।
- Success Message: ফর্ম সফলভাবে সাবমিট হলে, একটি সফল বার্তা প্রদর্শিত হবে।
উপসংহার:
Spring MVC তে ফর্ম হ্যান্ডলিং এবং ভ্যালিডেশন একটি শক্তিশালী এবং সহজ প্রক্রিয়া। @Valid, BindingResult, এবং Spring MVC ফর্ম টেমপ্লেট ব্যবহার করে আপনি সহজে ফর্ম ডাটা গ্রহণ, ভ্যালিডেশন এবং ত্রুটি ম্যানেজমেন্ট করতে পারেন। এটি আপনার ওয়েব অ্যাপ্লিকেশনে একটি ক্লিন এবং রক্ষণাবেক্ষণযোগ্য ফর্ম হ্যান্ডলিং সমাধান প্রদান করে।
Read more