JSF (JavaServer Faces) ফ্রেমওয়ার্কে Custom Validator তৈরি করা এবং ব্যবহার করা একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ব্যবহারকারীর ইনপুট যাচাই করতে এবং ওয়েব অ্যাপ্লিকেশনের ডেটা নিরাপত্তা নিশ্চিত করতে সাহায্য করে। JSF স্ট্যান্ডার্ড ভ্যালিডেটর সরবরাহ করে, তবে যখন আপনার নিজস্ব ব্যবসায়িক লজিক অনুসারে ভ্যালিডেশন প্রয়োজন হয়, তখন Custom Validator তৈরি করা হয়।
Custom Validator কী?
Custom Validator হল একটি কাস্টম ক্লাস বা মেথড যা ব্যবহারকারীর ইনপুট যাচাই করার জন্য তৈরি করা হয়। JSF-এর built-in @Valid, <f:validator> অথবা @FacesValidator অ্যানোটেশন ব্যবহারের মাধ্যমে আপনি কাস্টম ভ্যালিডেটর তৈরি করতে পারেন। এটি একটি নির্দিষ্ট ইনপুটের বৈধতা পরীক্ষা করতে সাহায্য করে, যেমন ইমেইল ঠিক আছে কিনা, পাসওয়ার্ডের শক্তি, বা অন্য কোনো কাস্টম লজিক।
Custom Validator তৈরি করার ধাপ
১. @FacesValidator অ্যানোটেশন ব্যবহার করে Custom Validator তৈরি
@FacesValidator অ্যানোটেশন JSF-এ একটি কাস্টম ভ্যালিডেটর তৈরি করতে ব্যবহৃত হয়। এটি আপনাকে কাস্টম ভ্যালিডেটর ক্লাস তৈরি করার সুযোগ দেয়, যেখানে আপনি আপনার ভ্যালিডেশন লজিক প্রয়োগ করতে পারেন।
১.1. Custom Validator ক্লাস তৈরি করা
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
@FacesValidator("passwordValidator")
public class PasswordValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String password = (String) value;
// পাসওয়ার্ডের জন্য ভ্যালিডেশন লজিক
if (password == null || password.length() < 8) {
FacesMessage msg = new FacesMessage("Password must be at least 8 characters long.");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
if (!password.matches(".*[A-Z].*")) {
FacesMessage msg = new FacesMessage("Password must contain at least one uppercase letter.");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
if (!password.matches(".*\\d.*")) {
FacesMessage msg = new FacesMessage("Password must contain at least one digit.");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
এখানে:
@FacesValidator("passwordValidator"): এটি একটি কাস্টম ভ্যালিডেটর তৈরি করে, যার নামpasswordValidator। এটি পরবর্তীতে JSF পেজে ব্যবহার করা হবে।validate(): এই মেথডে পাসওয়ার্ডের বৈধতা যাচাই করা হয়েছে। পাসওয়ার্ডের দৈর্ঘ্য, বড় হাতের অক্ষর এবং সংখ্যা যাচাই করা হয়েছে।
১.2. JSF পেজে Custom Validator ব্যবহার করা
<h:form>
<h:outputLabel for="password" value="Password:" />
<h:inputSecret id="password" value="#{userBean.password}">
<f:validator validatorId="passwordValidator" />
</h:inputSecret>
<h:commandButton value="Submit" action="#{userBean.submit}" />
</h:form>
এখানে:
<f:validator validatorId="passwordValidator" />: এই ট্যাগটিpasswordValidatorভ্যালিডেটর ব্যবহার করবে, যা আমাদের কাস্টম ভ্যালিডেটর ক্লাসPasswordValidatorদ্বারা তৈরি হয়েছে।
১.3. Managed Bean (Backend)
@ManagedBean
@RequestScoped
public class UserBean {
private String password;
// Getter and Setter
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// Submit method
public String submit() {
// Business logic here
return "success"; // Navigate to success page
}
}
এখানে:
UserBeanক্লাসেpasswordফিল্ডটি ইনপুট হিসেবে নেওয়া হবে এবং কাস্টম ভ্যালিডেটর দ্বারা যাচাই করা হবে।
২. Custom Validator এর ব্যবহার
Custom Validator তৈরি করার পর, আপনি এটি আপনার JSF পৃষ্ঠায় <f:validator> ট্যাগের মাধ্যমে প্রয়োগ করতে পারেন। কাস্টম ভ্যালিডেটরের কাজ হলো ব্যবহারকারীর ইনপুট যাচাই করা এবং যদি তা অবৈধ হয়, তবে ব্যবহারকারীকে একটি FacesMessage প্রদর্শন করা।
২.1. ValidatorException Handling
যখন কোনো ইনপুট অবৈধ হয়, তখন ValidatorException থ্রো করা হয়, যার মাধ্যমে আপনি ব্যবহারকারীর জন্য একটি মেসেজ প্রদর্শন করতে পারেন।
FacesMessage msg = new FacesMessage("Invalid input");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
৩. JSF Validation Lifecycle
JSF ফ্রেমওয়ার্কে ভ্যালিডেশন সাধারণত Apply Request Values এবং Process Validations ফেজের মধ্যে সম্পন্ন হয়। কাস্টম ভ্যালিডেটর যখন চালানো হয় তখন JSF তার ইনপুট কম্পোনেন্টের ডেটাকে যাচাই করে এবং ফলস্বরূপ একটি সঠিক বা ভুল ফলাফল প্রদান করে।
৪. JSF Validator এর বিভিন্ন প্রকার
JSF-এ কিছু অন্যান্য স্ট্যান্ডার্ড ভ্যালিডেটর রয়েছে যা সাধারণভাবে ব্যবহৃত হয়:
LengthValidator: ইনপুটের দৈর্ঘ্য যাচাই করার জন্য।RangeValidator: একটি পরিসরের মধ্যে মান থাকতে হবে এমন ভ্যালিডেটর।RegexValidator: ইনপুটের সাথে একটি নির্দিষ্ট রেগুলার এক্সপ্রেশন মিলবে কিনা তা যাচাই করার জন্য।
সারাংশ
JSF-এ Custom Validator তৈরি এবং ব্যবহার করা খুবই সহজ এবং এটি আপনাকে আপনার অ্যাপ্লিকেশনের জন্য কাস্টম লজিক এবং যাচাই প্রক্রিয়া তৈরি করতে সাহায্য করে। @FacesValidator অ্যানোটেশন ব্যবহার করে আপনি একটি কাস্টম ভ্যালিডেটর তৈরি করতে পারেন এবং <f:validator> ট্যাগের মাধ্যমে এটি আপনার পৃষ্ঠায় ব্যবহার করতে পারেন। কাস্টম ভ্যালিডেটর সাধারণত ব্যবহারকারীর ইনপুট যাচাই করতে ব্যবহৃত হয়, যা অ্যাপ্লিকেশনটির নিরাপত্তা এবং ডেটার সঠিকতা নিশ্চিত করে।
Read more