Struts 2 একটি শক্তিশালী ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। Validation বা যাচাই ফিচারটি Struts 2-এ খুবই গুরুত্বপূর্ণ, কারণ এটি ব্যবহারকারীর ইনপুট যাচাই করতে সাহায্য করে, যাতে অপ্রত্যাশিত বা ভুল ডাটা অ্যাপ্লিকেশনে প্রবাহিত না হয়। Struts 2-এ XML ভিত্তিক Validation কনফিগারেশন ব্যবহৃত হয়, যার মাধ্যমে আপনি ইনপুট যাচাই নিয়ম নির্ধারণ করতে পারেন এবং সেই অনুযায়ী অ্যাকশন ক্লাসে প্রয়োজনীয় লজিক প্রয়োগ করতে পারেন।
XML ভিত্তিক Validation কনফিগারেশন
Struts 2-এ validation কনফিগারেশন দুটি স্তরে করা যায়:
- Struts Validation (XML-based validation): এই কনফিগারেশনটি
struts.xmlএবংvalidation.xmlফাইলে করা হয়, যা Action Class বা Form Bean এর ডাটা যাচাই করতে ব্যবহৃত হয়। - Annotation-based Validation: এটি একটি আধুনিক পদ্ধতি যেখানে Java এন্টিটি বা ক্লাসের প্রপার্টিতে annotations ব্যবহার করা হয়।
এখানে আমরা XML ভিত্তিক Validation কনফিগারেশনের মাধ্যমে Struts 2 Validation ব্যবহারের একটি সম্পূর্ণ উদাহরণ দেখব।
১. Struts 2 Validation XML কনফিগারেশন
১.১. validation.xml ফাইল
validation.xml ফাইলে আপনার অ্যাপ্লিকেশনটির বিভিন্ন ইনপুট ফিল্ডের জন্য যাচাই নিয়ম (validation rules) কনফিগার করা হয়।
এটি সাধারনত src/main/resources ডিরেক্টরিতে থাকে এবং এতে action ক্লাসের form-bean বা action class এর ভ্যালিডেশন নিয়মগুলি উল্লেখ করা হয়।
উদাহরণ: validation.xml কনফিগারেশন
<!DOCTYPE validators PUBLIC "-//Apache Struts//DTD Validator 1.0//EN" "http://struts.apache.org/dtds/struts-validator-1.0.dtd">
<validators>
<!-- Validation for HelloAction -->
<field name="name">
<field-validator type="required">
<message>Name is required!</message>
</field-validator>
<field-validator type="stringlength">
<param name="min">3</param>
<param name="max">30</param>
<message>Name must be between 3 and 30 characters!</message>
</field-validator>
</field>
<field name="email">
<field-validator type="required">
<message>Email is required!</message>
</field-validator>
<field-validator type="email">
<message>Please enter a valid email address!</message>
</field-validator>
</field>
</validators>
ব্যাখ্যা:
- name এবং email ফিল্ডের জন্য ভ্যালিডেশন কনফিগার করা হয়েছে।
- required: এই ফিল্ডটি ফাঁকা থাকতে পারবে না।
- stringlength: নামের দৈর্ঘ্য ৩ থেকে ৩০ ক্যারেক্টারের মধ্যে হতে হবে।
- email: এটি একটি বৈধ ইমেইল ফরম্যাট হতে হবে।
১.২. struts.xml কনফিগারেশন
struts.xml ফাইলটি Struts 2-এর মূল কনফিগারেশন ফাইল, যেখানে অ্যাকশন, রেসাল্ট এবং অন্যান্য কনফিগারেশন সংজ্ঞায়িত হয়। এখানে validation ফাইলটি রেফারেন্স করা হয়।
<struts>
<package name="default" namespace="/" extends="struts-default">
<!-- HelloAction class definition -->
<action name="hello" class="com.example.HelloAction" method="execute">
<result>/WEB-INF/content/hello.jsp</result>
<!-- Validation configuration -->
<interceptor-ref name="defaultStack">
<param name="validation.enabled">true</param>
</interceptor-ref>
</action>
</package>
</struts>
ব্যাখ্যা:
- interceptor-ref: এখানে defaultStack ইন্টারসেপ্টরের মাধ্যমে validation.enabled প্যারামিটারটি
trueকরা হয়েছে, যা অ্যাকশন ক্লাসে validation.xml ফাইলের কনফিগারেশন অ্যাক্টিভেট করবে।
২. Action Class কনফিগারেশন
Action class-এ ValidationAware ইন্টারফেস ইমপ্লিমেন্ট করলে, আপনি addFieldError(), addActionError() ইত্যাদি মেথড ব্যবহার করে কাস্টম এরর মেসেজ প্রদান করতে পারবেন।
উদাহরণ: Action Class
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
private String name;
private String email;
// 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;
}
@Override
public String execute() {
// Business logic here
return SUCCESS;
}
// Custom validation method
@Override
public void validate() {
if (name == null || name.trim().isEmpty()) {
addFieldError("name", "Name cannot be empty.");
}
if (email == null || email.trim().isEmpty()) {
addFieldError("email", "Email cannot be empty.");
}
}
}
ব্যাখ্যা:
- validate(): এই মেথডে আপনি কাস্টম ভ্যালিডেশন যুক্ত করতে পারেন। উদাহরণস্বরূপ, যদি নাম বা ইমেইল ফাঁকা থাকে, তবে addFieldError() মেথড ব্যবহার করে একটি ত্রুটি বার্তা যোগ করা হবে।
- addFieldError(): এই মেথড ব্যবহার করে আপনি নির্দিষ্ট ফিল্ডে ত্রুটি বার্তা যোগ করতে পারবেন।
৩. JSP পেজে Validation Error দেখানো
JSP পেজে Struts 2 tags ব্যবহার করে আপনি ভ্যালিডেশন এররগুলি প্রদর্শন করতে পারেন।
উদাহরণ: JSP পেজ
<!-- hello.jsp -->
<html>
<body>
<h2>Enter your details</h2>
<s:form action="hello" method="post">
<s:textfield name="name" label="Name"/>
<s:textfield name="email" label="Email"/>
<s:submit value="Submit"/>
<!-- Display validation errors -->
<s:fielderror fieldName="name"/>
<s:fielderror fieldName="email"/>
</s:form>
</body>
</html>
ব্যাখ্যা:
- s:fielderror: এই ট্যাগটি নির্দিষ্ট ফিল্ডের জন্য ত্রুটি বার্তা প্রদর্শন করে। যদি name বা email ফিল্ডে ত্রুটি থাকে, তবে সেই ত্রুটির বার্তা এখানে দেখানো হবে।
৪. Struts 2 Validation Features
- Declarative Validation: Struts 2-এ XML ফাইলের মাধ্যমে আপনি ফিল্ড এবং অ্যাকশন লেভেলে ভ্যালিডেশন কনফিগার করতে পারেন।
- Custom Validation: আপনি কাস্টম ভ্যালিডেশন মেথড লিখে আরও জটিল ভ্যালিডেশন লজিক প্রয়োগ করতে পারেন।
- Error Handling: Struts 2 ত্রুটি গুলি actionError বা fieldError এর মাধ্যমে সঠিকভাবে হ্যান্ডল করতে সহায়তা করে।
সারাংশ
- Struts 2 Validation XML ভিত্তিক কনফিগারেশন এবং অ্যাকশন ক্লাসের মাধ্যমে ডাটা ভ্যালিডেশন প্রক্রিয়াকে পরিচালনা করে।
- validation.xml ফাইলে আপনি প্রতিটি ফিল্ডের জন্য যাচাই নিয়ম সেট করতে পারেন এবং struts.xml ফাইলে এই কনফিগারেশন রেফারেন্স করা হয়।
- Action class এ validate() মেথডের মাধ্যমে কাস্টম ভ্যালিডেশন লজিক যুক্ত করা যায়।
- JSP পেজে Struts 2 tags ব্যবহার করে ত্রুটি বার্তা সুন্দরভাবে প্রদর্শন করা যায়।
Struts 2 এ XML ভিত্তিক ভ্যালিডেশন ব্যবহার করা সহজ এবং কার্যকর, যা ডাটার সঠিকতা এবং অ্যাপ্লিকেশনের নিরাপত্তা নিশ্চিত করতে সহায়তা করে।
Read more