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-এ ফর্ম ভ্যালিডেশন দুইভাবে করা যায়:
- Action Class Validation: Action ক্লাসের মধ্যে ফর্মের ইনপুট ভ্যালিডেশন করার জন্য validate() মেথড ব্যবহার করা হয়।
- Annotation-based Validation: Java Annotations ব্যবহার করে ভ্যালিডেশন করা যায়, যা আরও সিম্পল এবং কাস্টমাইজযোগ্য।
২. Action Class Validation
Struts 2-এ Action ক্লাসের মধ্যে validate() মেথড ব্যবহার করা হয় ফর্ম ভ্যালিডেশন করার জন্য। এই মেথডটি ActionSupport ক্লাস থেকে ইনহেরিট করা যায় এবং এটি Validation Errors নির্ধারণ করে এবং সেগুলির জন্য ActionErrors তৈরি করতে সাহায্য করে।
উদাহরণ: Action Class Validation
- 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;
}
}
- 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>
- 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
- 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;
}
}
- 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>
- 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 ব্যবহার করা যেতে পারে। এর মাধ্যমে, আপনি অ্যাপ্লিকেশনের ইনপুট যাচাই এবং ব্যবহারকারীর কাছে ত্রুটি বার্তা প্রদর্শন করতে সহজেই সমাধান পেতে পারেন।
Read more