BeanValidation ব্যবহার করে ডাটা ভ্যালিডেশন

ডাটা বাইন্ডিং এবং ডাটা মডেল - ভাডিন (Vaadin) - Web Development

273

Vaadin-এ ফর্ম ডেভেলপমেন্টের সময় ডাটা ভ্যালিডেশন খুবই গুরুত্বপূর্ণ, কারণ এটি নিশ্চিত করে যে ব্যবহারকারী সঠিক ধরনের ইনপুট দিচ্ছে। Java Bean Validation API (JSR 303 এবং JSR 380) ব্যবহার করে Vaadin অ্যাপ্লিকেশনে ডাটা ভ্যালিডেশন সহজে করা যায়। Vaadin এবং BeanValidation-এর সমন্বয়ে আপনি খুব সহজেই UI ইনপুটের জন্য ভ্যালিডেশন যোগ করতে পারেন, যেমন- নাম, ইমেইল, বয়স ইত্যাদি।

BeanValidation কী?


BeanValidation হলো একটি Java API যা ডেটা ভ্যালিডেশন করতে সাহায্য করে। এর মাধ্যমে আপনি আপনার Java Beans (অথবা POJOs) এর ফিল্ডগুলোতে বিভিন্ন ধরনের ভ্যালিডেশন কনস্ট্রেইন্ট প্রয়োগ করতে পারেন। Vaadin এই API-এর সাথে সহজে ইন্টিগ্রেট করা যায়, এবং এই ব্যবস্থায় ফর্ম ইনপুট ডেটা অটোমেটিক্যালি ভ্যালিডেট করা হয়।

Vaadin এ BeanValidation ব্যবহার করার জন্য প্রস্তুতি


BeanValidation ব্যবহার করতে প্রথমে আপনার প্রজেক্টে কিছু ডিপেনডেন্সি যোগ করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে নিচের ডিপেনডেন্সি আপনার pom.xml ফাইলে যোগ করুন:

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.0.Final</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>javax.validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.0</version>
</dependency>

Vaadin ফর্মে BeanValidation প্রয়োগ করা


এখন Vaadin ফর্মে BeanValidation যোগ করতে আপনাকে কিছু অ্যানোটেশন ব্যবহার করতে হবে, যেমন @NotNull, @Email, @Size ইত্যাদি। এগুলো ডাটা ইনপুট ভ্যালিডেশন নিশ্চিত করে। নিচে একটি উদাহরণ দেওয়া হল যেখানে একটি ফর্মে নাম, ইমেইল এবং বয়স ইনপুট করা হয়েছে এবং সেগুলোর জন্য ভ্যালিডেশন প্রয়োগ করা হয়েছে:

উদাহরণ: BeanValidation দিয়ে ফর্ম ভ্যালিডেশন

import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.component.formlayout.FormLayout;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.data.binder.Binder;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Email;

public class MyFormView extends VerticalLayout {

    public MyFormView() {
        // ফর্মের জন্য কম্পোনেন্ট তৈরি করা
        TextField nameField = new TextField("Name");
        TextField emailField = new TextField("Email");
        TextField ageField = new TextField("Age");

        // ভ্যালিডেশন বাইনডার সেট করা
        Binder<MyFormData> binder = new Binder<>(MyFormData.class);

        // BeanValidation এর মাধ্যমে ভ্যালিডেশন প্রয়োগ
        binder.forField(nameField)
              .asRequired("Name is required")
              .withValidator(name -> name.length() >= 3, "Name must be at least 3 characters")
              .bind(MyFormData::getName, MyFormData::setName);

        binder.forField(emailField)
              .asRequired("Email is required")
              .withValidator(email -> email.contains("@"), "Invalid email address")
              .bind(MyFormData::getEmail, MyFormData::setEmail);

        binder.forField(ageField)
              .asRequired("Age is required")
              .withValidator(age -> age.matches("\\d+"), "Age must be a valid number")
              .bind(MyFormData::getAge, MyFormData::setAge);

        // সাবমিট বাটন তৈরি
        Button submitButton = new Button("Submit", event -> {
            if (binder.validate().isOk()) {
                Notification.show("Form Submitted Successfully!");
            } else {
                Notification.show("Form contains errors!");
            }
        });

        // ফর্মে কম্পোনেন্টগুলো যোগ করা
        FormLayout formLayout = new FormLayout(nameField, emailField, ageField, submitButton);
        add(formLayout);
    }

    // MyFormData ক্লাস
    public static class MyFormData {

        @NotNull
        @Size(min = 3, message = "Name must be at least 3 characters")
        private String name;

        @NotNull
        @Email(message = "Please provide a valid email address")
        private String email;

        @NotNull
        @Size(min = 1, message = "Age is required")
        private String age;

        // 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 getAge() {
            return age;
        }

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

কোডের ব্যাখ্যা:


  • Binder: Binder ব্যবহার করে BeanValidation চালানো হয়। এটি ফর্ম ইনপুটের সাথে একটি নির্দিষ্ট ক্লাস (এখানে MyFormData) বাইন্ড করে। পরে এই ক্লাসের ফিল্ডগুলোর উপর BeanValidation প্রয়োগ করা হয়।
  • ফিল্ড ভ্যালিডেশন: nameField, emailField, এবং ageField এর জন্য BeanValidation অ্যানোটেশন (যেমন @NotNull, @Email, @Size) এবং কাস্টম ভ্যালিডেটর প্রয়োগ করা হয়েছে। এই ভ্যালিডেশন চেকগুলো চালানোর পর ফর্মটি সাবমিট করা হয়।
  • Notification: ফর্মটি যদি সঠিকভাবে ভ্যালিড হয়, তাহলে একটি সফল নোটিফিকেশন দেখানো হয়, অন্যথায় ত্রুটি বার্তা দেখানো হয়।

উপসংহার


Vaadin-এ BeanValidation ব্যবহার করে আপনি সহজেই ফর্ম ডেটা ভ্যালিডেশন পরিচালনা করতে পারেন। এটি ফর্মের ইনপুটগুলো অটোমেটিক্যালি যাচাই করে এবং ইউজারকে সঠিক ইনপুট প্রদান করতে সহায়তা করে। BeanValidation এবং Vaadin এর সমন্বয়ে আপনি সহজেই শক্তিশালী এবং ইউজার-ফ্রেন্ডলি ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...