Facelets হল JSF এর জন্য একটি টেমপ্লেট সিস্টেম যা XHTML ভিত্তিক এবং JSF ফ্রেমওয়ার্কে পেজ রেন্ডারিংকে আরও উন্নত এবং কার্যকরী করে তোলে। এটি JSF 2.0 তে প্রবর্তিত হয় এবং পূর্ববর্তী JSP (JavaServer Pages)-এর থেকে অনেক বেশি কার্যকর এবং নমনীয়। Facelets একটি টেমপ্লেট-ভিত্তিক পদ্ধতি অনুসরণ করে, যেখানে UI উপাদানগুলো এবং লে আউটগুলি পুনরায় ব্যবহারযোগ্য হয়ে থাকে।
Facelets কী?
Facelets হল JSF ফ্রেমওয়ার্কের একটি ভিউ টেমপ্লেট ইঞ্জিন, যা XHTML ফাইলের মাধ্যমে UI উপাদানগুলো সংজ্ঞায়িত করে। এটি UI কন্টেন্টের জন্য একটি সিম্পল এবং প্রাক-প্রসেসড রেন্ডারিং ইঞ্জিন সরবরাহ করে, যা সহজে তৈরি এবং কাস্টমাইজ করা যায়।
Facelets এর প্রধান সুবিধা হল:
- কাস্টম টেমপ্লেটিং: একাধিক পেজে সাধারণ লে আউট এবং UI উপাদান পুনরায় ব্যবহার করা যায়।
- সরাসরি XHTML: XHTML ফাইল সরাসরি ব্যবহৃত হয়, তাই এটি SEO-বান্ধব এবং স্ট্যান্ডার্ড ওয়েব পেজের জন্য উপযুক্ত।
- ক্লিন এবং কার্যকর কোড: JSP এর তুলনায় Facelets কোড আরও পরিষ্কার এবং সংক্ষিপ্ত থাকে।
Facelets এর মাধ্যমে পেজ টেমপ্লেট তৈরি করা
Facelets এর মাধ্যমে পেজ টেমপ্লেট তৈরি করতে, আপনাকে দুটি প্রধান উপাদান ব্যবহার করতে হবে: হেডার এবং ফুটার অংশ যা সমস্ত পৃষ্ঠার জন্য কমন থাকবে, এবং প্রতিটি পৃষ্ঠার জন্য একটি বিশেষ কনটেন্ট অংশ যা পরিবর্তিত হবে।
১. টেমপ্লেট ফাইল তৈরি করা
Facelets টেমপ্লেট সাধারণত একটি *.xhtml ফাইলে সংজ্ঞায়িত করা হয়। এই ফাইলটির মধ্যে থাকবে সাধারণ ইউজার ইন্টারফেস উপাদান যেমন হেডার, ফুটার, সাইডবার ইত্যাদি, এবং একটি <ui:insert> ট্যাগ থাকবে, যা পেজের কনটেন্ট সন্নিবেশ করবে।
এখানে একটি সাধারণ টেমপ্লেট ফাইলের উদাহরণ দেওয়া হলো:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>JSF Example</title>
</h:head>
<h:body>
<h:form>
<!-- Header -->
<h1>My Website</h1>
<h:outputText value="Welcome to the site!" />
<!-- Page-specific content goes here -->
<ui:insert name="content">
<h:outputText value="Default content goes here." />
</ui:insert>
<!-- Footer -->
<h:outputText value="All rights reserved." />
</h:form>
</h:body>
</html>
এই টেমপ্লেট ফাইলে ui:insert ট্যাগের মাধ্যমে একটি নির্দিষ্ট জায়গা চিহ্নিত করা হয়েছে, যেখানে কনটেন্ট সন্নিবেশিত হবে।
২. কনটেন্ট পেজ তৈরি করা
এখন আপনাকে একাধিক পেজ তৈরি করতে হবে, যেখানে এই টেমপ্লেটটি ব্যবহৃত হবে। প্রতিটি পেজের জন্য বিশেষ কনটেন্ট থাকবে, যা টেমপ্লেটের ui:insert ট্যাগের মাধ্যমে সন্নিবেশিত হবে।
উদাহরণস্বরূপ, home.xhtml পেজের কনটেন্ট থাকবে:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/WEB-INF/templates/mainTemplate.xhtml">
<ui:define name="content">
<h2>Home Page</h2>
<p>Welcome to the home page of the website!</p>
</ui:define>
</ui:composition>
এখানে ui:composition ট্যাগ ব্যবহার করে mainTemplate.xhtml টেমপ্লেটের মাধ্যমে পেজটি রেন্ডার করা হয়েছে। ui:define ট্যাগের মাধ্যমে content অংশটি সন্নিবেশিত করা হয়েছে, যা টেমপ্লেটের ui:insert ট্যাগের সঙ্গে মিলে।
৩. বিভিন্ন পেজের জন্য কনটেন্ট সংজ্ঞায়িত করা
একইভাবে, অন্য পেজগুলো তৈরি করা যাবে, যেমন about.xhtml অথবা contact.xhtml, যেখানে প্রত্যেকটির আলাদা কনটেন্ট থাকবে কিন্তু সাধারণ লে আউট একই থাকবে।
about.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/WEB-INF/templates/mainTemplate.xhtml">
<ui:define name="content">
<h2>About Us</h2>
<p>This is the about us page of our website.</p>
</ui:define>
</ui:composition>
এখানে, mainTemplate.xhtml টেমপ্লেটটি পুনরায় ব্যবহার করা হয়েছে, কিন্তু content অংশে About Us পেজের কনটেন্ট সংজ্ঞায়িত করা হয়েছে।
৪. টেমপ্লেট এবং কনটেন্ট ফাইলের সংযোগ
টেমপ্লেট এবং কনটেন্ট ফাইলের মধ্যে সম্পর্ক স্থাপন করতে template অ্যাট্রিবিউট ব্যবহার করা হয়, যেখানে টেমপ্লেটের পথ উল্লেখ করা থাকে (যেমন /WEB-INF/templates/mainTemplate.xhtml)।
৫. টেমপ্লেট রেন্ডারিং
এখন, JSF অ্যাপ্লিকেশনটি চালিয়ে, যখন আপনি home.xhtml বা about.xhtml পেজে যাবেন, টেমপ্লেটের সাধারণ লে আউট এবং কনটেন্ট সংশ্লিষ্টভাবে রেন্ডার হবে।
Facelets টেমপ্লেটের সুবিধা
- কোড পুনঃব্যবহারযোগ্যতা: Facelets টেমপ্লেটের মাধ্যমে একাধিক পেজে কমন লে আউট ব্যবহার করা যায়, যা কোড পুনঃব্যবহারযোগ্য এবং আরও সহজ করে তোলে।
- মন্টাজযোগ্যতা: প্রতিটি পেজের জন্য আলাদা কনটেন্ট সংজ্ঞায়িত করা সম্ভব, যা চমৎকার ফлексিবিলিটি প্রদান করে।
- সহজ রেন্ডারিং: Facelets সরাসরি XHTML ফাইল ব্যবহার করে, যা কোনো অতিরিক্ত প্রসেসিং ছাড়াই রেন্ডার হয়।
সারাংশ
Facelets হল JSF এর জন্য একটি অত্যন্ত কার্যকর এবং নমনীয় টেমপ্লেট সিস্টেম যা পেজ লে আউট এবং কনটেন্টকে সহজভাবে আলাদা করতে এবং পুনরায় ব্যবহারযোগ্য করতে সহায়তা করে। এতে ui:insert এবং ui:define ট্যাগ ব্যবহার করে সহজেই টেমপ্লেট তৈরি করা যায়, এবং এর মাধ্যমে একাধিক পেজে সাধারণ লে আউট এবং কনটেন্ট পুনরায় ব্যবহার করা সম্ভব হয়।
Read more