Struts 2 এর Form Handling

স্ট্রাটস (Struts 2) - Java Technologies

416

Struts 2 ফ্রেমওয়ার্কে Form Handling খুবই গুরুত্বপূর্ণ একটি ফিচার। এটি ব্যবহারকারীর ইনপুট গ্রহণ এবং সেগুলোর উপর ভিত্তি করে অ্যাকশন প্রক্রিয়া করার জন্য ব্যবহৃত হয়। Struts 2 ফর্ম হ্যান্ডলিং খুবই সহজ এবং নমনীয়, যেখানে Action Classes এবং Value Stack ব্যবহার করে ডাটা প্রসেস করা হয়। ফর্ম ইনপুট এবং তাদের ফলাফল অ্যাকশন ক্লাসের মাধ্যমে প্রক্রিয়া করা হয় এবং Struts 2 বিভিন্নভাবে এই কাজটি করে থাকে, যেমন ActionForm, Input Validation, এবং Type Conversion


Struts 2 Form Handling: প্রধান উপাদানগুলি

Struts 2-এ Form Handling এর জন্য কয়েকটি প্রধান উপাদান রয়েছে:

  1. Action Class
  2. JSP Form (UI Layer)
  3. Struts 2 Validation
  4. Type Conversion
  5. Result Mapping

১. Action Class

Struts 2-এ ফর্ম ইনপুট প্রসেসিং সাধারণত Action class এর মাধ্যমে করা হয়। এই ক্লাসে ইউজারের ইনপুট গ্রহণ করা হয় এবং নির্দিষ্ট লজিক বা ব্যবসায়িক কার্যক্রম সম্পাদন করা হয়।

Action Class উদাহরণ:

package com.example.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
    private String username;
    private String password;

    // Getter and Setter Methods
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    // Execute Method
    public String execute() {
        if ("admin".equals(username) && "admin123".equals(password)) {
            return SUCCESS;  // Login successful
        } else {
            return INPUT;   // Login failed
        }
    }
}

ব্যাখ্যা:

  • username এবং password ইউজারের ইনপুট ধারণ করে।
  • execute() মেথডে ইন্টারনাল লজিক লিখে, ইনপুট যাচাই করা হয়।
  • SUCCESS এবং INPUT রিটার্ন করা হয় যার মাধ্যমে রিডিরেকশন হয়।

২. JSP Form (UI Layer)

Struts 2-এ ফর্ম ইনপুট গ্রহণ করার জন্য সাধারণত JSP ব্যবহার করা হয়। JSP পেজে struts tags ব্যবহার করে ফর্ম তৈরি করা হয় এবং এটি Action class এর সাথে যুক্ত থাকে।

JSP Form উদাহরণ:

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
<body>
    <s:form action="login">
        <s:textfield name="username" label="Username" />
        <s:password name="password" label="Password" />
        <s:submit value="Login" />
    </s:form>
</body>
</html>

ব্যাখ্যা:

  • s:form: Struts 2 ট্যাগ ব্যবহার করে ফর্ম তৈরি করা হয়েছে, যেখানে actionlogin অ্যাকশন ক্লাসে রিকোয়েস্ট যাবে।
  • s:textfield এবং s:password: এটি ফর্ম ইনপুট ফিল্ড তৈরি করার জন্য ব্যবহৃত হয়।
  • s:submit: এটি সাবমিট বোতাম তৈরি করে।

৩. Struts 2 Validation

Struts 2 এর একটি শক্তিশালী বৈশিষ্ট্য হলো Input Validation। এটি ব্যবহারকারীর ইনপুট যাচাই করতে সহায়ক এবং struts-validation.xml ফাইলের মাধ্যমে কনফিগার করা হয়।

Validation ফাইল উদাহরণ:

<?xml version="1.0" encoding="UTF-8"?>
<validators>
    <validator name="requiredstring" class="org.apache.struts2.validator.RequiredStringValidator">
        <param name="fieldName">username</param>
        <message key="error.username.required">Username is required.</message>
    </validator>
    <validator name="requiredstring" class="org.apache.struts2.validator.RequiredStringValidator">
        <param name="fieldName">password</param>
        <message key="error.password.required">Password is required.</message>
    </validator>
</validators>

ব্যাখ্যা:

  • requiredstring: এখানে username এবং password এর জন্য ইনপুট চেক করা হয়েছে।
  • যদি ইনপুট না দেওয়া হয়, তবে উপরের মেসেজটি প্রদর্শিত হবে।

৪. Type Conversion

Struts 2 তে ব্যবহারকারী ইনপুটকে Java objects-এ রূপান্তর করার জন্য type conversion ব্যবহৃত হয়। Struts 2 সরাসরি String ইনপুট থেকে Java objects যেমন Date, Integer, Boolean ইত্যাদিতে রূপান্তর করতে সহায়ক।

Type Conversion উদাহরণ:

private Date dateOfBirth; // Type to be converted

public Date getDateOfBirth() {
    return dateOfBirth;
}

public void setDateOfBirth(Date dateOfBirth) {
    this.dateOfBirth = dateOfBirth;
}

Struts 2 DateConverter ব্যবহার করে String ডেটাকে Date অবজেক্টে রূপান্তরিত করবে। একইভাবে, IntegerConverter বা BooleanConverter ব্যবহার করা যায়।


৫. Result Mapping

Struts 2-এ রিকোয়েস্টের ফলস্বরূপ result mapping এর মাধ্যমে বিভিন্ন ভিউ পেজে রিডিরেক্ট করা হয়। আপনি struts.xml ফাইলে result ট্যাগ ব্যবহার করে এটি কনফিগার করতে পারেন।

Result Mapping উদাহরণ:

<action name="login" class="com.example.action.LoginAction" method="execute">
    <result name="success">/welcome.jsp</result>
    <result name="input">/login.jsp</result>
</action>

ব্যাখ্যা:

  • success রিটার্ন করলে /welcome.jsp পেজে রিডিরেক্ট হবে।
  • input রিটার্ন করলে /login.jsp পেজে রিডিরেক্ট হবে।

Struts 2 এর ফর্ম হ্যান্ডলিং-এর গুরুত্বপূর্ণ দিকসমূহ

  1. Action Class Integration: Form data সাধারণত Action class এর মাধ্যমে প্রক্রিয়া করা হয়। সেখানে বিভিন্ন ধরনের লজিক (যেমন, ভ্যালিডেশন, ডাটাবেস অপারেশন) সম্পাদিত হয়।
  2. Binding Form Data: Struts 2 OGNL (Object Graph Navigation Language) ব্যবহার করে Action class এর ফিল্ডগুলির সাথে ইনপুট ডাটা বাইন্ড করে।
  3. Data Validation: Struts 2 struts-validation.xml ফাইলে কাস্টম ভ্যালিডেশন রুলস প্রদান করে ইনপুট ভ্যালিডেশন কার্যকর করে।
  4. Type Conversion: Struts 2 ইনপুট ডাটাকে Java objects যেমন Date, Integer, Boolean-এ রূপান্তর করার জন্য কনভার্সন সাপোর্ট দেয়।

সারাংশ

Struts 2-এ Form Handling একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া, যেখানে Action class, JSP forms, Validation, এবং Type Conversion বিভিন্ন স্টেপের মাধ্যমে ফর্ম ইনপুট প্রক্রিয়া করা হয়। struts.xml এবং struts-validation.xml কনফিগারেশন ফাইলগুলি ব্যবহারকারী ইনপুট যাচাই এবং রাউটিং সিস্টেমের জন্য প্রয়োজনীয় কনফিগারেশন প্রদান করে। Result Mapping ফিচারটি ব্যবহারকারীকে সঠিক ফলাফল অনুযায়ী ভিউ পেজে রিডিরেক্ট করার জন্য ব্যবহৃত হয়।

Content added By

Struts 2 তে Form Data Submit করার প্রক্রিয়া

Struts 2 একটি MVC ফ্রেমওয়ার্ক, যা Model-View-Controller আর্কিটেকচারের মাধ্যমে ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। Struts 2 তে ফর্ম ডেটা সাবমিট করার জন্য, মূলত Action ক্লাস এবং struts.xml কনফিগারেশন ফাইলের মাধ্যমে কাজ করা হয়। Form ডেটা ব্যবহারকারী থেকে গ্রহণ করে অ্যাকশন ক্লাসে প্রক্রিয়া করা হয় এবং ফলস্বরূপ উপযুক্ত ভিউ পৃষ্ঠায় রিডিরেক্ট করা হয়।

Struts 2 তে ফর্ম ডেটা সাবমিট করার জন্য সাধারণভাবে JSP পৃষ্ঠায় ফর্ম তৈরি করা হয়, যেখানে ব্যবহারকারী ইনপুট প্রদান করে। তারপর Action ক্লাসের মাধ্যমে এই ডেটা প্রসেস করা হয় এবং রেজাল্ট ভিউ পৃষ্ঠায় পাঠানো হয়।


Struts 2 তে Form Data Submit করার উদাহরণ

১. Action Class তৈরি করা

প্রথমে একটি Action Class তৈরি করতে হবে, যা ফর্ম থেকে আসা ডেটা গ্রহণ করবে এবং প্রক্রিয়া করবে। এখানে আমরা একটি UserForm ক্লাস তৈরি করব।

package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class UserFormAction extends ActionSupport {
    
    private String username;
    private String password;
    
    // Getter and Setter methods
    public String getUsername() {
        return username;
    }
    
    public void setUsername(String username) {
        this.username = username;
    }
    
    public String getPassword() {
        return password;
    }
    
    public void setPassword(String password) {
        this.password = password;
    }
    
    // Action method to process the form data
    public String submitForm() {
        // Example: Simulate processing the form data
        if ("admin".equals(username) && "password123".equals(password)) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }
}

ব্যাখ্যা:

  1. UserFormAction ক্লাসটি ActionSupport থেকে এক্সটেন্ড করা হয়েছে, যাতে Struts 2 এর বিভিন্ন সুবিধা পাওয়া যায়।
  2. username এবং password নামক দুটি প্রপার্টি ডিফাইন করা হয়েছে এবং তাদের জন্য getter এবং setter মেথড তৈরি করা হয়েছে।
  3. submitForm() মেথডটি ফর্ম সাবমিটের পর ডেটা প্রসেস করে এবং সফলভাবে সাবমিট হলে SUCCESS রিটার্ন করে, অন্যথায় ERROR রিটার্ন করে।

২. struts.xml কনফিগারেশন ফাইল

struts.xml ফাইলটি Struts 2 অ্যাপ্লিকেশন কনফিগার করার জন্য ব্যবহৃত হয়। এখানে আমরা UserFormAction ক্লাসের জন্য অ্যাকশন মেপিং এবং রেজাল্ট কনফিগার করব।

<struts>
    <package name="default" extends="struts-default">
        <action name="userForm" class="com.example.UserFormAction">
            <result name="success">/welcome.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

ব্যাখ্যা:

  1. action: এখানে userForm নামক একটি অ্যাকশন ডিফাইন করা হয়েছে যা UserFormAction ক্লাসের সাথে মেপিং করা হয়েছে।
  2. result: অ্যাকশন সফল হলে /welcome.jsp পৃষ্ঠায় রিডিরেক্ট করা হবে এবং ত্রুটি হলে /error.jsp পৃষ্ঠায় রিডিরেক্ট করা হবে।

৩. JSP পৃষ্ঠা (ফর্ম তৈরি করা)

এখন আমরা একটি JSP পৃষ্ঠা তৈরি করব যেখানে ব্যবহারকারী নাম এবং পাসওয়ার্ড ইনপুট করবে এবং ফর্ম সাবমিট করবে।

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>User Form</title></head>
<body>
    <h2>Enter Your Credentials</h2>
    
    <s:form action="userForm" method="post">
        <s:textfield name="username" label="Username" required="true" />
        <s:password name="password" label="Password" required="true" />
        <s:submit value="Submit" />
    </s:form>
</body>
</html>

ব্যাখ্যা:

  1. s:form: Struts 2 ট্যাগ লাইব্রেরি ব্যবহার করে ফর্ম তৈরি করা হয়েছে। action অ্যাট্রিবিউটের মাধ্যমে ফর্মটি userForm অ্যাকশনের সাথে যুক্ত করা হয়েছে।
  2. s:textfield এবং s:password: এই ট্যাগগুলি ইনপুট ফিল্ড তৈরি করতে ব্যবহৃত হয়, যেখানে ব্যবহারকারী নাম এবং পাসওয়ার্ড প্রদান করবে।
  3. s:submit: এটি ফর্ম সাবমিট করার জন্য একটি বাটন তৈরি করে।

৪. Result View (Welcome Page)

ফর্ম সফলভাবে সাবমিট হলে ব্যবহারকারীকে একটি স্বাগত পৃষ্ঠায় রিডিরেক্ট করা হবে।

<html>
<head><title>Welcome</title></head>
<body>
    <h2>Welcome, ${username}!</h2>
</body>
</html>

ব্যাখ্যা:

  • ${username}: Action ক্লাস থেকে প্রাপ্ত username প্রপার্টি জেএসপিতে প্রদর্শিত হবে।

৫. Error Page

ফর্ম সাবমিটের সময় ত্রুটি হলে, ব্যবহারকারীকে একটি ত্রুটি পৃষ্ঠায় রিডিরেক্ট করা হবে।

<html>
<head><title>Error</title></head>
<body>
    <h2>Invalid credentials. Please try again!</h2>
</body>
</html>

ব্যাখ্যা:

  • যদি ব্যবহারকারী ভুল ব্যবহারকারীর নাম বা পাসওয়ার্ড প্রদান করে, তাহলে ERROR রেজাল্ট রিটার্ন হবে এবং ত্রুটি পৃষ্ঠা প্রদর্শিত হবে।

সারাংশ

Struts 2 তে ফর্ম ডেটা সাবমিট করার প্রক্রিয়া খুবই সরল এবং কার্যকরী। একটি ফর্ম তৈরি করা হয় যেখানে ব্যবহারকারী ইনপুট প্রদান করে এবং তারপর এই ডেটা Action ক্লাসের মাধ্যমে প্রসেস করা হয়। এর পরে উপযুক্ত ফলাফল (রেজাল্ট) ভিত্তিক পৃষ্ঠায় রিডিরেক্ট করা হয়। Struts 2 ফ্রেমওয়ার্কের Action, struts.xml কনফিগারেশন ফাইল, এবং JSP পৃষ্ঠার মধ্যে সমন্বয় করে ডেটা সাবমিট এবং প্রক্রিয়া করা যায়।


Content added By

Struts 2 একটি শক্তিশালী MVC (Model-View-Controller) ফ্রেমওয়ার্ক যা Form Data Binding-এর জন্য ModelDriven ইন্টারফেস সরবরাহ করে। ModelDriven Interface Struts 2-এ একটি সহজ এবং কার্যকরী উপায়, যা Action ক্লাসে ফর্ম ডেটা অ্যাক্সেস করতে সহায়ক হয়। এটি ডেটাবেস বা অন্যান্য স্টোরেজের সাথে ডেটা সিঙ্ক্রোনাইজ করতে ব্যবহৃত হয়, এবং এটি POJO (Plain Old Java Object) ব্যবহার করে ফর্ম ডেটা ম্যানেজমেন্ট সহজ করে।

Struts 2-এ, ModelDriven ইন্টারফেস ব্যবহার করে Action ক্লাসে ফর্ম ডেটা অ্যাক্সেস এবং প্রক্রিয়া করা হয়। এটি Struts 2 এর automatic data population সুবিধা প্রদান করে, যেখানে ফর্মের ইনপুট ডেটা স্বয়ংক্রিয়ভাবে Action ক্লাসের প্রপার্টিতে ম্যাপ করা হয়।


ModelDriven Interface এর ব্যবহার

ModelDriven ইন্টারফেসের মাধ্যমে আপনি Action ক্লাসে আপনার ফর্ম ডেটা প্যাকেজ করতে পারেন। Action ক্লাসে setModel() এবং getModel() মেথডের মাধ্যমে ফর্ম ডেটা অ্যাক্সেস করা হয়।

ModelDriven Interface এর উপকারিতা:

  • Automatic Form Data Binding: ফর্ম ডেটা ইনপুট স্বয়ংক্রিয়ভাবে Action ক্লাসের প্রপার্টিতে ম্যাপ হয়।
  • Object-Oriented: এটি POJO ব্যবহার করে ডেটা মডেল তৈরি করার সুযোগ দেয়, যা অ্যাকশন ক্লাসের সাথে সম্পৃক্ত।
  • Readability and Maintainability: ডেটা ম্যানিপুলেশন এবং ফর্ম ইনপুট ভালোভাবে হ্যান্ডল করা যায়, যার ফলে কোড বেশি রিডেবল এবং মেইনটেইনেবল হয়।

উদাহরণ: ModelDriven Interface ব্যবহার করে Form Data Binding

ধরা যাক, আমাদের একটি ফর্ম আছে যেখানে ব্যবহারকারী তার নাম এবং বয়স ইনপুট করবে। আমরা ModelDriven ইন্টারফেস ব্যবহার করে ফর্ম ডেটা Action ক্লাসে বাইন্ড করতে পারি।

১. Action ক্লাস তৈরি করা

প্রথমে, আমরা ModelDriven ইন্টারফেস ইমপ্লিমেন্ট করে একটি Action ক্লাস তৈরি করব। এখানে, ফর্ম ডেটা Person নামে একটি POJO ক্লাসে রাখব।

package com.example;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class PersonAction extends ActionSupport implements ModelDriven<Person> {

    // Person model instance
    private Person person = new Person();

    // Getter and Setter for Person
    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    // Implementing ModelDriven interface method
    @Override
    public Person getModel() {
        return person;
    }

    // execute() method to handle the business logic
    public String save() {
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
        return SUCCESS;
    }
}

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

  • ModelDriven ইন্টারফেসটি Person POJO ক্লাসটি মডেল হিসেবে ব্যবহার করার জন্য ইমপ্লিমেন্ট করা হয়েছে।
  • getModel() মেথডে Person অবজেক্টটি রিটার্ন করা হয়েছে, যা Struts 2 দ্বারা name এবং age ফর্ম ফিল্ডে থাকা ডেটা ধারণ করবে।
  • save() মেথডে person অবজেক্টের ডেটা (যেমন নাম এবং বয়স) প্রিন্ট করা হয়েছে।

২. Person POJO ক্লাস তৈরি করা

package com.example;

public class Person {
    private String name;
    private int age;

    // Getter and Setter methods
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

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

  • Person POJO ক্লাসে দুটি প্রপার্টি (name এবং age) রয়েছে, এবং এগুলোর জন্য getter এবং setter মেথড দেওয়া হয়েছে।

৩. struts.xml কনফিগারেশন

struts.xml ফাইলে অ্যাকশন কনফিগার করা হবে, যাতে ফর্ম ডেটা হ্যান্ডলিং করা যায়।

<struts>
    <package name="default" extends="struts-default">
        <action name="savePerson" class="com.example.PersonAction" method="save">
            <result name="success">/WEB-INF/content/success.jsp</result>
            <result name="error">/WEB-INF/content/error.jsp</result>
        </action>
    </package>
</struts>

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

  • savePerson নামক অ্যাকশনটি PersonAction ক্লাসের save() মেথডকে কল করবে।
  • success এবং error রেজাল্ট পেজের জন্য রিটার্ন ভ্যালু SUCCESS অথবা ERROR অনুযায়ী রিডাইরেক্ট করবে।

৪. JSP ফর্ম তৈরি করা

এই ফর্মটি ব্যবহারকারীর ইনপুট গ্রহণ করবে এবং Struts 2 এর OGNL (Object-Graph Navigation Language) এর মাধ্যমে Person ক্লাসের প্রপার্টিতে মেপ হবে।

<!-- savePerson.jsp -->
<html>
<head><title>Save Person</title></head>
<body>
    <h2>Person Form</h2>
    <s:form action="savePerson" method="post">
        <s:textfield name="person.name" label="Name" />
        <s:textfield name="person.age" label="Age" />
        <s:submit value="Save" />
    </s:form>
</body>
</html>

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

  • s:form: Struts 2 ট্যাগ লাইব্রেরির form ট্যাগ ব্যবহার করে ফর্ম তৈরি করা হয়েছে।
  • s:textfield: ব্যবহারকারী নাম এবং বয়স ইনপুট করার জন্য টেক্সটফিল্ড তৈরি করা হয়েছে।
  • s:submit: ফর্ম সাবমিট করার জন্য একটি সাবমিট বাটন।

৫. Success JSP ফাইল

ফর্ম সাবমিটের পর, সফল হলে এটি success.jsp পেজে রিডাইরেক্ট হবে।

<!-- success.jsp -->
<html>
<head><title>Success</title></head>
<body>
    <h2>Person Saved Successfully!</h2>
    <p>Name: <s:property value="person.name" /></p>
    <p>Age: <s:property value="person.age" /></p>
</body>
</html>

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

  • s:property ট্যাগ ব্যবহার করে Action ক্লাসের person অবজেক্টের name এবং age প্রপার্টি প্রদর্শন করা হয়েছে।

উপসংহার

ModelDriven Interface ব্যবহার করে Struts 2-এ ফর্ম ডেটা বাইন্ডিং খুব সহজে এবং কার্যকরীভাবে করা যায়। এটি POJO মডেল ব্যবহার করে Action ক্লাসের মাধ্যমে ফর্ম ডেটা হ্যান্ডলিং করার একটি শক্তিশালী এবং সুসংগঠিত পদ্ধতি প্রদান করে। এই পদ্ধতি ডেটা ম্যানিপুলেশন, ইনপুট ভ্যালিডেশন এবং অ্যাকশন প্রক্রিয়াকরণ খুব সহজে পরিচালনা করতে সাহায্য করে। Struts 2-এর ModelDriven ফিচার ব্যবহার করে অ্যাপ্লিকেশনগুলি আরও রিডেবল, মেইনটেনেবল এবং এক্সটেনসিবল হয়।

Content added By

Struts 2 একটি শক্তিশালী ওয়েব ফ্রেমওয়ার্ক, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে Form Validation এবং Error Handling এর জন্য সহজ এবং কার্যকরী সমাধান সরবরাহ করে। Form Validation ব্যবহারকারীর ইনপুট যাচাই করতে সহায়ক, এবং Error Messages ব্যবহারকারীকে ভুল ইনপুট বা ভুল ফর্ম পূরণ করার ক্ষেত্রে নির্দেশনা প্রদান করে।

Struts 2-এ ফর্ম ভ্যালিডেশন করার জন্য Action Validation, Annotation-Based Validation, এবং Struts Validation Framework ব্যবহার করা যেতে পারে।


১. Struts 2 Form Validation

Struts 2-এ ফর্ম ভ্যালিডেশন দুইভাবে করা যায়:

  1. Action Class Validation: Action ক্লাসের মধ্যে ফর্মের ইনপুট ভ্যালিডেশন করার জন্য validate() মেথড ব্যবহার করা হয়।
  2. Annotation-based Validation: Java Annotations ব্যবহার করে ভ্যালিডেশন করা যায়, যা আরও সিম্পল এবং কাস্টমাইজযোগ্য।

২. Action Class Validation

Struts 2-এ Action ক্লাসের মধ্যে validate() মেথড ব্যবহার করা হয় ফর্ম ভ্যালিডেশন করার জন্য। এই মেথডটি ActionSupport ক্লাস থেকে ইনহেরিট করা যায় এবং এটি Validation Errors নির্ধারণ করে এবং সেগুলির জন্য ActionErrors তৈরি করতে সাহায্য করে।

উদাহরণ: Action Class Validation

  1. Action Class with validate() Method:
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
    private String username;
    private String password;

    // Validate method to validate form data
    @Override
    public void validate() {
        if (username == null || username.trim().isEmpty()) {
            addFieldError("username", "Username is required.");
        }
        if (password == null || password.trim().isEmpty()) {
            addFieldError("password", "Password is required.");
        }
    }

    // Getters and Setters
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String execute() {
        return SUCCESS;
    }
}
  1. struts.xml Configuration:
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.example.UserAction">
            <result>/login.jsp</result>
        </action>
    </package>
</struts>
  1. JSP Page (login.jsp):
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
    <h2>Login Form</h2>
    <s:form action="login">
        <s:textfield name="username" label="Username" />
        <s:textfield name="password" label="Password" type="password" />
        <s:submit value="Submit" />
    </s:form>
    
    <s:if test="hasActionErrors()">
        <div style="color: red;">
            <ul>
                <s:actionerror />
            </ul>
        </div>
    </s:if>
</body>
</html>

ব্যাখ্যা:

  • validate() মেথড: এখানে, username এবং password ইনপুট ফিল্ড ভ্যালিডেট করা হয়েছে। যদি ইনপুট ফিল্ডগুলি ফাঁকা থাকে, তবে addFieldError() মেথড ব্যবহার করে ত্রুটি বার্তা যুক্ত করা হয়।
  • addFieldError(): এই মেথড ব্যবহার করে নির্দিষ্ট ফিল্ডের জন্য ত্রুটি বার্তা প্রদর্শন করা হয়।
  • hasActionErrors(): JSP পৃষ্ঠায় যদি কোনো ত্রুটি থাকে, তবে তা actionerror ট্যাগের মাধ্যমে প্রদর্শিত হয়।

৩. Annotation-Based Validation

Struts 2 এ Annotation-Based Validation ব্যবহার করে ফর্ম ভ্যালিডেশন খুব সহজে করা যায়। এই ধরনের ভ্যালিডেশনে JSR 303/JSR 380 Bean Validation ব্যবহার করা হয়, যা Hibernate Validator বা অন্যান্য ভ্যালিডেশন লাইব্রেরি ব্যবহার করতে পারে।

উদাহরণ: Annotation-Based Validation

  1. Action Class with Annotations:
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
    @NotNull(message = "Username cannot be null")
    @Size(min = 5, message = "Username must have at least 5 characters")
    private String username;

    @NotNull(message = "Password cannot be null")
    @Size(min = 8, message = "Password must have at least 8 characters")
    private String password;

    // Getters and Setters
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String execute() {
        return SUCCESS;
    }
}
  1. struts.xml Configuration:
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.example.UserAction">
            <result>/login.jsp</result>
        </action>
    </package>
</struts>
  1. JSP Page (login.jsp):
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
    <h2>Login Form</h2>
    <s:form action="login">
        <s:textfield name="username" label="Username" />
        <s:textfield name="password" label="Password" type="password" />
        <s:submit value="Submit" />
    </s:form>
    
    <s:if test="hasFieldErrors()">
        <div style="color: red;">
            <ul>
                <s:fielderror />
            </ul>
        </div>
    </s:if>
</body>
</html>

ব্যাখ্যা:

  • Annotations: @NotNull এবং @Size এনোটেশন ব্যবহার করা হয়েছে, যা Hibernate Validator দ্বারা প্রক্রিয়া করা হবে।
  • Field validation: ফিল্ডগুলির জন্য নির্দিষ্ট ত্রুটি বার্তা দেয়া হয়েছে।
  • hasFieldErrors(): hasFieldErrors() মেথডটি ব্যবহার করা হয়েছে যাতে ফিল্ডভিত্তিক ত্রুটিগুলি fielderror ট্যাগের মাধ্যমে প্রদর্শিত হয়।

৪. Error Message কনফিগারেশন

Error Messages কনফিগারেশনের মাধ্যমে, আপনি ভ্যালিডেশন বা অন্যান্য ত্রুটি বার্তা কাস্টমাইজ করতে পারেন। Struts 2 অ্যাপ্লিকেশনে ত্রুটি বার্তা কনফিগার করার জন্য struts-validation.xml বা Resource Bundles ব্যবহার করা হয়।

উদাহরণ: Error Message কনফিগারেশন (struts-validation.xml)

<validators>
    <field name="username">
        <field-validator type="required">
            <message>Username is required!</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="min">5</param>
            <param name="max">15</param>
            <message>Username must be between 5 and 15 characters!</message>
        </field-validator>
    </field>
</validators>

Resource Bundle Example (messages.properties):

username.required=Username is required!
username.length=Username must be between 5 and 15 characters!

Struts 2 এর মাধ্যমে, আপনি ত্রুটি বার্তাগুলিকে আরও বেশি কাস্টমাইজ করতে পারেন এবং ইন্টারন্যাশনালাইজেশন (i18n) ফিচার ব্যবহার করে বিভিন্ন ভাষায় ত্রুটি বার্তা প্রদর্শন করতে পারেন।


সারাংশ

Struts 2-এ Form Validation এবং Error Message কনফিগারেশন খুবই গুরুত্বপূর্ণ এবং সহজ। Action Class Validation এবং Annotation-based Validation ব্যবহার করে ব্যবহারকারীর ইনপুট ভ্যালিডেট করা সম্ভব। তাছাড়া Error Messages কনফিগার করার জন্য struts-validation.xml এবং Resource Bundles ব্যবহার করা যেতে পারে। এর মাধ্যমে, আপনি অ্যাপ্লিকেশনের ইনপুট যাচাই এবং ব্যবহারকারীর কাছে ত্রুটি বার্তা প্রদর্শন করতে সহজেই সমাধান পেতে পারেন।

Content added By

Struts 2 একটি শক্তিশালী ফ্রেমওয়ার্ক যা ফর্ম হ্যান্ডলিং এবং ভ্যালিডেশনকে সহজ করে তোলে। ফর্ম হ্যান্ডলিংয়ের মাধ্যমে ইউজারের ইনপুট রিসিভ করা হয় এবং Struts 2 Validation এর মাধ্যমে ইনপুটের বৈধতা যাচাই করা হয়। Struts 2 অটোমেটিকালি ইনপুট ডেটা মডেল অবজেক্টে ম্যাপ করে এবং সেই ডেটার উপর বিভিন্ন ভ্যালিডেশন লজিক প্রয়োগ করা যায়।

এখানে আমরা Struts 2-এ Form Handling এবং Validation এর উদাহরণ দেখব।


1. Form Handling কী?

Form Handling এর মাধ্যমে ইউজারের ইনপুট (যেমন, নাম, ইমেইল, পাসওয়ার্ড) একটি ফর্ম থেকে নেওয়া হয় এবং সেই ডেটা প্রক্রিয়াজাত (process) করা হয়। Struts 2 এর ফর্ম হ্যান্ডলিং অত্যন্ত সহজ কারণ এটি ডেটা মডেল ক্লাসে মডেলিং করে, যা নিজে থেকেই getter এবং setter মেথড দিয়ে ইনপুট ডেটা প্রক্রিয়া করে।


2. Validation কী?

Validation হল ইনপুট ডেটার বৈধতা যাচাই করার প্রক্রিয়া। Struts 2 ফ্রেমওয়ার্কে Annotations এবং XML কনফিগারেশন দুটো মাধ্যমেই ভ্যালিডেশন করা যায়। এখানে আমরা Annotations-based Validation এবং XML-based Validation দুইটির উদাহরণ দেখব।


Form Handling এবং Validation এর উদাহরণ

Step 1: Action Class (Form Handling)

প্রথমে একটি Action Class তৈরি করি যা ফর্ম ডেটা গ্রহণ করবে এবং সেই ডেটার উপর ভ্যালিডেশন প্রক্রিয়া প্রয়োগ করবে।

UserAction.java (Action Class)

package com.example.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.validation.SkipValidation;

public class UserAction extends ActionSupport {

    private String username;
    private String email;
    private String password;

    // Getter and Setter methods
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    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;
    }

    // Execute method (for form handling)
    @Override
    public String execute() {
        if ("admin".equals(username) && "password123".equals(password)) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }

    // Validate method (for validation)
    @Override
    public void validate() {
        if (username == null || username.trim().isEmpty()) {
            addFieldError("username", "Username is required.");
        }

        if (email == null || email.trim().isEmpty()) {
            addFieldError("email", "Email is required.");
        } else if (!email.matches("^[A-Za-z0-9+_.-]+@(.+)$")) {
            addFieldError("email", "Invalid email format.");
        }

        if (password == null || password.trim().isEmpty()) {
            addFieldError("password", "Password is required.");
        }
    }
}

এখানে:

  • username, email, এবং password ফিল্ড ডেটা ফর্ম থেকে গ্রহণ করা হবে।
  • validate() মেথডে ভ্যালিডেশন করা হয়েছে, যেখানে যদি কোনো ফিল্ড খালি থাকে বা ইমেইল ফরম্যাট সঠিক না হয়, তাহলে addFieldError() ব্যবহার করে ত্রুটি বার্তা যুক্ত করা হবে।
  • execute() মেথডে লগইন প্রক্রিয়া প্রক্রিয়া করা হয়েছে। যদি ইউজারনেম এবং পাসওয়ার্ড সঠিক হয় তবে SUCCESS রিটার্ন করবে, অন্যথায় ERROR রিটার্ন করবে।

Step 2: Validation Annotations (Optional)

Struts 2 annotations ব্যবহার করে আরও সুবিধাজনকভাবে ভ্যালিডেশন করা যায়। Validation annotations দিয়ে ফিল্ডের ওপর ভ্যালিডেশন চেক করা যায়।

import com.opensymphony.xwork2.validator.annotations.EmailValidator;
import com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;

public class UserAction extends ActionSupport {

    @RequiredStringValidator(message = "Username is required")
    private String username;

    @EmailValidator(message = "Please enter a valid email address")
    private String email;

    @RequiredStringValidator(message = "Password is required")
    private String password;

    // Getter and Setter methods for username, email, and password...

    @Override
    public String execute() {
        return SUCCESS;
    }
}

এখানে:

  • @RequiredStringValidator: ফিল্ডটি খালি না থাকার জন্য ভ্যালিডেশন।
  • @EmailValidator: ইমেইল ফিল্ডে সঠিক ইমেইল ফরম্যাটের জন্য ভ্যালিডেশন।
  • @RegexFieldValidator: কাস্টম রেগুলার এক্সপ্রেশন দিয়ে ভ্যালিডেশন।

Step 3: Struts 2 Configuration (struts.xml)

struts.xml ফাইলে Action Class কনফিগার করতে হবে এবং ভ্যালিডেশন মেথডের ফলাফল কনফিগার করতে হবে।

struts.xml কনফিগারেশন:

<struts>
    <package name="default" extends="struts-default">
        <action name="user" class="com.example.action.UserAction">
            <result name="success">/welcome.jsp</result>
            <result name="error">/login.jsp</result>
        </action>
    </package>
</struts>

এখানে:

  • action name="user": এটি UserAction ক্লাসের user অ্যাকশন মেপিং করবে।
  • result: SUCCESS হলে welcome.jsp এবং ERROR হলে login.jsp পৃষ্ঠায় রিডাইরেক্ট করা হবে।

Step 4: JSP Form for Input

এখন একটি JSP ফাইল তৈরি করি যেখানে ফর্ম ইনপুট নেওয়া হবে এবং Struts 2 ট্যাগ লাইব্রেরি ব্যবহার করে ফর্ম তৈরি হবে।

userForm.jsp

<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head><title>User Form</title></head>
<body>
    <h2>User Login</h2>
    <s:form action="user" method="post">
        <s:textfield name="username" label="Username"/>
        <s:textfield name="email" label="Email"/>
        <s:password name="password" label="Password"/>
        <s:submit value="Login"/>
    </s:form>

    <s:fielderror fieldName="username"/>
    <s:fielderror fieldName="email"/>
    <s:fielderror fieldName="password"/>
</body>
</html>

এখানে:

  • s:form: ফর্মের জন্য Struts 2 এর ট্যাগ ব্যবহার করা হয়েছে। অ্যাকশন নাম user দেওয়া হয়েছে।
  • s:textfield, s:password: ইউজারনেম, ইমেইল এবং পাসওয়ার্ড ইনপুট ফিল্ড তৈরি করা হয়েছে।
  • s:fielderror: যদি কোনো ফিল্ডে ত্রুটি থাকে, তবে তা দেখানো হবে।

5. Validation Handling (Error Handling)

যদি ব্যবহারকারী ভুল ইনপুট প্রদান করে, তেমন ক্ষেত্রে Validation এর ত্রুটি বার্তা দেখানো হবে। এখানে s:fielderror ট্যাগটি ত্রুটির বার্তা দেখানোর জন্য ব্যবহৃত হয়েছে।


সারাংশ

Struts 2-এ ফর্ম হ্যান্ডলিং এবং ভ্যালিডেশন অত্যন্ত শক্তিশালী এবং সহজ। আপনি Action Class-এ ইনপুট ডেটা গ্রহণ এবং validate() মেথডের মাধ্যমে ফর্ম ডেটার ভ্যালিডেশন করতে পারেন। এছাড়া, Annotations ব্যবহার করে ফিল্ড লেভেলে ভ্যালিডেশন করা যায়। Struts 2 ট্যাগ লাইব্রেরি (যেমন s:textfield, s:password, s:fielderror) দিয়ে ফর্ম ইনপুট এবং ত্রুটি হ্যান্ডলিং অত্যন্ত সহজ হয়।

Content added By
Promotion

Are you sure to start over?

Loading...