JavaServer Faces (JSF) ফ্রেমওয়ার্কে Custom Validator তৈরি করা একটি শক্তিশালী পদ্ধতি, যা ডেভেলপারদের ইউজার ইনপুটের জন্য কাস্টম ভ্যালিডেশন লজিক প্রয়োগ করার সুযোগ দেয়। JSF এর ইনপুট কম্পোনেন্টগুলোর সাথে কাস্টম ভ্যালিডেটর ব্যবহার করে, আপনি নিজস্ব ভ্যালিডেশন লজিক তৈরি করতে পারেন যা ব্যবহারকারীর ইনপুটের উপর ভিত্তি করে বিশেষ শর্ত বা নিয়ম প্রয়োগ করে।
Custom Validator কী?
Custom Validator হলো একটি ক্লাস যা JSF ফ্রেমওয়ার্কে ইউজার ইনপুটের ভ্যালিডেশন করার জন্য তৈরি করা হয়। এটি JSF এর @FacesValidator অ্যানোটেশন দিয়ে চিহ্নিত করা হয় এবং validate() মেথড ব্যবহার করে ইনপুট ভ্যালিডেশন সম্পাদন করে।
Custom Validator তৈরি করার পদ্ধতি
- ভ্যালিডেটর ক্লাস তৈরি করা: আপনি একটি নতুন ক্লাস তৈরি করবেন যা
javax.faces.validator.Validatorইন্টারফেস বাjavax.faces.validator.Validatorএরvalidate()মেথড ইমপ্লিমেন্ট করবে। - JSF পেজে ব্যবহার করা: আপনার কাস্টম ভ্যালিডেটর পেজের ইনপুট কম্পোনেন্টের সাথে যুক্ত করা হবে।
Custom Validator তৈরি করার ধাপ
১. কাস্টম ভ্যালিডেটর ক্লাস তৈরি করা
প্রথমে একটি কাস্টম ভ্যালিডেটর ক্লাস তৈরি করুন, যা Validator ইন্টারফেস বা javax.faces.validator.Validator ক্লাস থেকে এক্সটেন্ড হবে। এর মধ্যে validate() মেথডটি ইমপ্লিমেন্ট করতে হবে, যা আপনার কাস্টম ভ্যালিডেশন লজিক কার্যকর করবে।
CustomValidator.java
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
@FacesValidator("usernameValidator")
public class UsernameValidator implements Validator {
@Override
public void validate(FacesContext context, javax.faces.component.UIComponent component, Object value) throws ValidatorException {
String username = (String) value;
// ভ্যালিডেশন লজিক: যদি ব্যবহারকারী "admin" নাম্বার দেন তবে তা গ্রহণ করা হবে না
if (username != null && username.equalsIgnoreCase("admin")) {
FacesMessage msg = new FacesMessage("Invalid username", "The username 'admin' is not allowed.");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
এখানে:
@FacesValidator("usernameValidator"): এই অ্যানোটেশনটি JSF ফ্রেমওয়ার্ককে জানায় যে এটি একটি কাস্টম ভ্যালিডেটর এবং এটি "usernameValidator" নামে অ্যাক্সেস করা যাবে।validate()মেথড: এটি ইউজারের ইনপুট ভ্যালিডেট করে এবং যদি ইনপুট ভ্যালিড না হয়, তবেValidatorExceptionছুড়ে দেয় এবং একটি ফেস মেসেজ তৈরি করে।
২. JSF পেজে কাস্টম ভ্যালিডেটর ব্যবহার করা
এখন আপনি এই কাস্টম ভ্যালিডেটরকে JSF পেজে ব্যবহার করতে পারেন। h:inputText বা অন্য কোনো ইনপুট কম্পোনেন্টের জন্য আপনার কাস্টম ভ্যালিডেটর ব্যবহার করতে f:validator ট্যাগটি ব্যবহার করুন।
form.xhtml
<h:form>
<h:outputLabel for="username" value="Username" />
<h:inputText id="username" value="#{userBean.username}">
<f:validator validatorId="usernameValidator" />
</h:inputText>
<h:message for="username" />
<h:commandButton value="Submit" action="#{userBean.submit}" />
</h:form>
এখানে:
f:validator: এই ট্যাগটি কাস্টম ভ্যালিডেটরকে ইনপুট কম্পোনেন্টের সাথে যুক্ত করে।validatorId="usernameValidator": এটি সেই ভ্যালিডেটরের আইডি যেটি আপনি@FacesValidatorঅ্যানোটেশনের মাধ্যমেUsernameValidatorক্লাসে ডিফাইন করেছেন।
৩. Managed Bean এর মাধ্যমে ইনপুট প্রসেসিং
এখন Managed Bean তৈরি করে ইনপুট প্রসেসিং এবং সাবমিশন লজিক সম্পাদন করতে হবে।
UserBean.java
import javax.faces.bean.ManagedBean;
@ManagedBean
public class UserBean {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String submit() {
// এখানে আপনি অন্য বিজনেস লজিক যোগ করতে পারেন
return "success"; // পেজ নেভিগেশন রিটার্ন করা হয়
}
}
এখানে:
submit()মেথডটি ব্যবহারকারীর ইনপুট প্রসেসিং এবং পরবর্তী পেজে নেভিগেশন নিয়ন্ত্রণ করে।
Custom Validator এর সুবিধা
- ইউজার ইন্টারঅ্যাকশন: কাস্টম ভ্যালিডেটর ব্যবহার করে আপনি ইউজারের ইনপুটে কাস্টম লজিক প্রয়োগ করতে পারেন, যা সাধারণ ভ্যালিডেশন পদ্ধতিগুলোর বাইরে।
- ফেস মেসেজ: আপনি কাস্টম ভ্যালিডেটরের মাধ্যমে সঠিক ফেস মেসেজ প্রদান করতে পারেন যা ব্যবহারকারীকে ইনপুট ঠিক করতে সাহায্য করবে।
- সীমিত বা জটিল শর্ত: কাস্টম ভ্যালিডেটরের মাধ্যমে আপনি ইনপুটের জন্য আরো জটিল শর্ত এবং কনফিগারেশন প্রয়োগ করতে পারেন।
সারাংশ
JSF এর Custom Validator ব্যবহার করে আপনি সহজেই আপনার ইউজারের ইনপুটের জন্য কাস্টম ভ্যালিডেশন লজিক তৈরি করতে পারেন। এটি ইউজারের ইনপুটের উপরে নির্দিষ্ট শর্ত প্রয়োগ করে এবং ইউজারকে সঠিক ইনপুট প্রদান করতে সহায়তা করে। @FacesValidator অ্যানোটেশন এবং validate() মেথডের মাধ্যমে JSF ফ্রেমওয়ার্কে কাস্টম ভ্যালিডেটর তৈরি এবং ব্যবহারের প্রক্রিয়া সম্পাদন করা হয়।
Read more