JavaServer Faces (JSF) অ্যাপ্লিকেশনগুলিতে পেজ নেভিগেশন একটি গুরুত্বপূর্ণ অংশ। এটি ব্যবহৃত হয় বিভিন্ন পৃষ্ঠার মধ্যে ইউজারের নেভিগেশন (পেজ থেকে পেজ) পরিচালনা করতে। JSF-এ পেজ নেভিগেশন কনফিগারেশন সাধারণত faces-config.xml ফাইলে করা হয়, তবে JSF 2.0 থেকে annotation-based নেভিগেশনও ব্যবহার করা যায়, যা অনেক সহজ ও নমনীয়।
JSF পেজ নেভিগেশন কনফিগারেশন
JSF অ্যাপ্লিকেশনগুলোতে পেজ নেভিগেশন কনফিগারেশন সাধারণত দুটি ধরনের হতে পারে:
- XML কনফিগারেশন (faces-config.xml)
- Annotation-based কনফিগারেশন (JSF 2.0 onwards)
১. XML কনফিগারেশন (faces-config.xml)
faces-config.xml ফাইলে আপনি পেজ নেভিগেশন কনফিগারেশন করতে পারেন। এখানে আপনাকে navigation-rule নামক একটি এলিমেন্ট ব্যবহার করতে হয়, যা পেজের মধ্যে নেভিগেশন রুল নির্দেশ করে।
faces-config.xml এর কনফিগারেশন:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<!-- Navigation Rule -->
<navigation-rule>
<from-view-id>/home.xhtml</from-view-id>
<navigation-case>
<from-outcome>goToPage1</from-outcome>
<to-view-id>/page1.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>goToPage2</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
এখানে /home.xhtml থেকে দুইটি ভিন্ন outcome দিয়ে নেভিগেট করা যেতে পারে:
goToPage1outcome হলে ব্যবহারকারী/page1.xhtmlতে নেভিগেট করবে।goToPage2outcome হলে/page2.xhtmlতে নেভিগেট করবে।
নেভিগেশন কনফিগারেশন ব্যাখ্যা:
- from-view-id: এটি নির্ধারণ করে যে কোন পেজ থেকে নেভিগেট হবে।
- from-outcome: এটি হলো সেই outcome যা ডেভেলপার বা অ্যাপ্লিকেশন থেকে নির্ধারিত হয়।
- to-view-id: এটি হলো যে পেজে নেভিগেট করা হবে।
২. Annotation-based কনফিগারেশন (JSF 2.0 onwards)
JSF 2.0 এবং পরবর্তী সংস্করণে, annotation ব্যবহার করে নেভিগেশন কনফিগার করা যেতে পারে। এখানে @ManagedBean এবং @NavigationCase অ্যানোটেশন ব্যবহার করা হয়, যা পেজ নেভিগেশন সহজ এবং আরও নমনীয় করে তোলে।
JSF Managed Bean এবং নেভিগেশন উদাহরণ:
import javax.faces.bean.ManagedBean;
@ManagedBean
public class NavigationBean {
public String goToPage1() {
return "goToPage1"; // outcome যা faces-config.xml তে কনফিগার করা
}
public String goToPage2() {
return "goToPage2"; // outcome যা faces-config.xml তে কনফিগার করা
}
}
এখন .xhtml পেজে Navigation ব্যবহার করা:
<h:form>
<h:commandButton value="Go to Page 1" action="#{navigationBean.goToPage1}" />
<h:commandButton value="Go to Page 2" action="#{navigationBean.goToPage2}" />
</h:form>
এখানে, navigationBean.goToPage1() এবং navigationBean.goToPage2() পদ্ধতিগুলি প্রতিটি বাটনের জন্য outcome প্রদান করবে এবং সেই অনুযায়ী নেভিগেশন করবে। যদি goToPage1 outcome থাকে, এটি /page1.xhtml তে নেভিগেট করবে এবং goToPage2 outcome হলে /page2.xhtml তে নেভিগেট করবে।
Outcome এবং Redirect
JSF নেভিগেশন Outcome দুটি ধরনের হতে পারে:
- Forward Outcome – যখন আপনি outcome ফেরত দেন, এটি ফর্মের পরবর্তী পৃষ্ঠায় রিডিরেক্ট না করে সরাসরি পৃষ্ঠার ভিউ আপডেট করবে।
- Redirect Outcome – যদি আপনি outcome-এর সাথে
redirect=trueযুক্ত করেন, তাহলে এটি ব্রাউজারকে নতুন URL এ রিডিরেক্ট করবে।
Redirect outcome কনফিগারেশন:
public String goToPage3() {
return "page3.xhtml?faces-redirect=true"; // Reroutes the request to page3.xhtml
}
এখানে, faces-redirect=true outcome যুক্ত করা হলে এটি নতুন পৃষ্ঠায় রিডিরেক্ট করবে, যা URL পরিবর্তন করবে।
সারাংশ
JSF এ পেজ নেভিগেশন কনফিগারেশন দুইটি মূল পদ্ধতিতে করা যায়:
- XML কনফিগারেশন:
faces-config.xmlফাইলেnavigation-ruleব্যবহার করে, যা অ্যাপ্লিকেশনের পেজ নেভিগেশন নিয়ম কনফিগার করতে সহায়তা করে। - Annotation-based কনফিগারেশন (JSF 2.0 onwards):
@ManagedBeanএবং@NavigationCaseঅ্যানোটেশন ব্যবহার করে, যা পেজ নেভিগেশনকে আরও সহজ এবং নমনীয় করে তোলে।
উল্লেখযোগ্য যে, JSF নেভিগেশন outcomes, ফরম অ্যাকশন, এবং URL রিডিরেকশনসহ খুবই ক্ষমতাশালী এবং flexible, যা ডেভেলপারদের পেজ নেভিগেশন কনফিগারেশন করার ক্ষেত্রে প্রচুর সুবিধা প্রদান করে।
Read more