Form Validation এর জন্য Hibernate Validator এবং JSR-303/JSR-380 ব্যবহার

Form Handling এবং Validation - স্প্রিং এমভিসি (Spring MVC) - Java Technologies

344

Spring MVC তে Form Validation করতে Hibernate Validator এবং JSR-303/JSR-380 এর ব্যবহার একটি শক্তিশালী এবং সুবিধাজনক পদ্ধতি। Hibernate Validator হল JSR-303 এবং JSR-380 এর একটি রেফারেন্স ইমপ্লিমেন্টেশন যা অ্যানোটেশন ভিত্তিক ভ্যালিডেশন সরবরাহ করে। JSR-303 হল Bean Validation API, এবং JSR-380 হল Bean Validation API এর আপডেট সংস্করণ।

এখানে আমরা দেখব কিভাবে Hibernate Validator এবং JSR-303/JSR-380 ব্যবহার করে Spring MVC অ্যাপ্লিকেশনে Form Validation করা যায়।


Step 1: Maven Dependency

প্রথমে, আপনার pom.xml ফাইলে Hibernate Validator এবং Bean Validation API এর জন্য ডিপেন্ডেন্সি যোগ করুন:

<dependencies>
    <!-- Spring Boot Starter Web for Spring MVC -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Hibernate Validator (JSR-303 and JSR-380) -->
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.0.Final</version> <!-- use the latest version -->
    </dependency>

    <!-- For Bean Validation API -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version> <!-- use the latest version -->
    </dependency>
</dependencies>

Step 2: Model Class with Validation Annotations

Spring MVC তে ফর্ম ভ্যালিডেশন করতে, মডেল ক্লাসে বিভিন্ন ভ্যালিডেশন অ্যানোটেশন যোগ করতে হবে। Hibernate Validator JSR-303/JSR-380 এর অ্যানোটেশন ব্যবহার করে ফিল্ডগুলো ভ্যালিডেট করা যাবে।

package com.example.model;

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

public class User {

    @NotNull(message = "Name cannot be null")
    @Size(min = 2, max = 30, message = "Name should have at least 2 characters")
    private String name;

    @NotNull(message = "Age cannot be null")
    @Min(value = 18, message = "Age should be greater than or equal to 18")
    private Integer age;

    @NotEmpty(message = "Email cannot be empty")
    private String email;

    // Getters and Setters
    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Explanation of Annotations:

  • @NotNull: ফিল্ডটি null হতে পারবে না।
  • @Size(min, max): একটি স্ট্রিং ফিল্ডের জন্য দৈর্ঘ্য সীমা নির্ধারণ করে।
  • @Min(value): একটি ইনটিজার ফিল্ডের জন্য ন্যূনতম মান নির্ধারণ করে।
  • @NotEmpty: একটি স্ট্রিং ফিল্ডে খালি মান গ্রহণ করা যাবে না।

Step 3: Controller with Form Validation

এখন একটি কন্ট্রোলার তৈরি করুন যেখানে ব্যবহারকারী ফর্ম সাবমিট করবে এবং @Valid অ্যানোটেশন ব্যবহার করে ভ্যালিডেশন করা হবে।

package com.example.controller;

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

import javax.validation.Valid;

@Controller
public class UserController {

    // Display the form
    @GetMapping("/user")
    public String showForm(User user) {
        return "userForm";
    }

    // Process the form
    @PostMapping("/user")
    public String submitForm(@Valid User user, BindingResult bindingResult, Model model) {
        if (bindingResult.hasErrors()) {
            return "userForm";  // If validation fails, show the form again with error messages
        }
        
        model.addAttribute("message", "User details submitted successfully!");
        return "userResult";  // Return a success view
    }
}

Explanation:

  • @Valid: এটি Spring এর একটি অ্যানোটেশন যা ফর্ম বাউন্ড অবজেক্ট (এখানে User ক্লাস) ভ্যালিডেট করার জন্য ব্যবহৃত হয়।
  • BindingResult: এটি রেসপন্স অবজেক্ট যা ফর্মের ভ্যালিডেশন ফলাফল ধারণ করে। যদি কোনো ভ্যালিডেশন ত্রুটি থাকে, তবে bindingResult.hasErrors() চেক করা হয়।
  • Model: মডেল ব্যবহার করে আমরা একটি মেসেজ অথবা অন্য ডেটা ভিউতে পাঠাতে পারি।

Step 4: Create the Form (userForm.jsp)

এখন একটি JSP ফাইল তৈরি করুন যেখানে ব্যবহারকারী ইনপুট দিবে।

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>User Form</title>
</head>
<body>
    <h2>User Form</h2>
    <form action="/user" method="post">
        <label>Name: </label>
        <input type="text" name="name" value="${user.name}"/>
        <c:if test="${not empty param.name}">
            <div style="color:red">${param.name}</div>
        </c:if><br/>
        
        <label>Age: </label>
        <input type="number" name="age" value="${user.age}"/><br/>
        
        <label>Email: </label>
        <input type="text" name="email" value="${user.email}"/><br/>
        
        <button type="submit">Submit</button>
    </form>

    <c:if test="${not empty message}">
        <div style="color:green">${message}</div>
    </c:if>
</body>
</html>

Explanation:

  • JSP Form: ফর্মের ইনপুট ক্ষেত্রের জন্য name, age, এবং email ফিল্ড আছে।
  • Validation Feedback: আপনি ব্যবহারকারীকে সঠিক ত্রুটির বার্তা প্রদর্শন করতে পারেন যদি ভ্যালিডেশন ব্যর্থ হয়।

Step 5: Display Validation Errors in the View

এখন userResult.jsp তৈরি করুন যা সফলভাবে ফর্ম সাবমিট করার পর ব্যবহারকারীকে প্রদর্শন করবে।

<html>
<head>
    <title>Form Submission Result</title>
</head>
<body>
    <h2>${message}</h2>
</body>
</html>

Step 6: Configure Spring MVC

web.xml কনফিগার করুন (যদি আপনি পুরানো Spring MVC প্রজেক্ট ব্যবহার করেন) বা Spring Boot এর জন্য প্রয়োজনীয় কনফিগারেশন নিশ্চিত করুন।

web.xml Configuration (for traditional Spring MVC project)

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

Conclusion

Hibernate Validator এবং JSR-303/JSR-380 ব্যবহার করে Spring MVC তে ফর্ম ভ্যালিডেশন একটি খুব সহজ এবং শক্তিশালী পদ্ধতি। আপনি @NotNull, @Size, @Min, @NotEmpty ইত্যাদি অ্যানোটেশন ব্যবহার করে ফিল্ড ভ্যালিডেশন করতে পারেন। Spring MVC তে @Valid অ্যানোটেশন এবং BindingResult ব্যবহার করে ফর্মের ভ্যালিডেশন ফলাফল চেক করা হয় এবং ত্রুটি থাকলে তা ব্যবহারকারীকে প্রদর্শন করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...