Apache Tapestry একটি component-based web framework, যেখানে UI উপাদানগুলোকে components হিসেবে ডিজাইন করা হয়। Tapestry এর মধ্যে template এবং layout ব্যবস্থার মাধ্যমে আপনি একটি সুসংগঠিত এবং পুনঃব্যবহারযোগ্য UI তৈরি করতে পারেন। এই টেমপ্লেট এবং লেআউট সিস্টেম Tapestry এর মূল শক্তি, যা ডেভেলপারদের সহজভাবে এবং কার্যকরভাবে ওয়েব পেজ ডিজাইন করতে সাহায্য করে।
এই টিউটোরিয়ালে আমরা Tapestry এর টেমপ্লেট এবং লেআউট ব্যবস্থার ব্যবহার ও কনফিগারেশন নিয়ে আলোচনা করব।
Tapestry এর template গুলি HTML এবং Tapestry Markup Language (TML) দ্বারা তৈরি করা হয়। TML হল Tapestry এর বিশেষ XML-like markup ভাষা যা HTML ট্যাগের মাধ্যমে কম্পোনেন্ট এবং তাদের ইন্টারঅ্যাকশনকে কাস্টমাইজ করতে সাহায্য করে।
Tapestry এর টেমপ্লেট সাধারণত HTML এবং TML ট্যাগের মাধ্যমে তৈরি হয়।
উদাহরণ: একটি সাধারণ Tapestry টেমপ্লেট:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Welcome to Apache Tapestry</title>
</head>
<body>
<h1>Welcome to Tapestry Framework!</h1>
<t:form>
<t:label value="Username" for="username" />
<t:textfield value="username" t:id="username" />
<t:label value="Password" for="password" />
<t:passwordfield value="password" t:id="password" />
<t:button value="Login" t:id="loginButton" />
</t:form>
</body>
</html>
এখানে:
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
: এটি Tapestry XML স্কিমা নামস্পেস।<t:form>
: Tapestry ফর্ম কম্পোনেন্ট, যা ইনপুট গ্রহণ করতে ব্যবহৃত হয়।<t:textfield>
: একটি টেক্সট ইনপুট ফিল্ড।<t:passwordfield>
: একটি পাসওয়ার্ড ইনপুট ফিল্ড।<t:button>
: একটি সাবমিট বাটন।Tapestry টেমপ্লেট সিস্টেমের অন্যতম সুবিধা হলো এর data-binding এবং event handling সুবিধা, যা ডেভেলপারদের UI এবং ডেটা লজিকের মধ্যে সরাসরি যোগাযোগ করতে দেয়।
Tapestry এর লেআউট সিস্টেমের মাধ্যমে আপনি একটি consistent UI structure তৈরি করতে পারেন, যা অ্যাপ্লিকেশনের প্রতিটি পেজে সহজে ব্যবহার করা যায়। লেআউট একটি master page বা layout page হিসেবে কাজ করে, যা আপনার ওয়েব পেজের অভ্যন্তরীণ কাঠামো নির্ধারণ করে এবং অন্যান্য পেজে পুনরায় ব্যবহারযোগ্য।
লেআউট পেজে সাধারণত একটি header, footer, navigation menu এবং content area থাকবে, যেটি অন্যান্য পেজ দ্বারা ইনক্লুড করা হবে।
উদাহরণ: লেআউট পেজ (layout.tml)
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>My Application</title>
</head>
<body>
<div id="header">
<h1>Welcome to My Website</h1>
</div>
<div id="navigation">
<t:link page="home">Home</t:link>
<t:link page="about">About</t:link>
</div>
<div id="content">
<t:insert page="content" />
</div>
<div id="footer">
<p>© 2024 My Website</p>
</div>
</body>
</html>
এখানে:
<t:insert page="content" />
: এটি লেআউট পেজের একটি স্থানীয় অংশ, যেখানে content পেজের কন্টেন্ট ইনক্লুড করা হবে।এখন আপনি যে পেজ তৈরি করবেন, সেখানে এই লেআউট পেজটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি home.tml পেজের মধ্যে:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<t:layout page="layout">
<h2>Home Page Content</h2>
<p>Welcome to the home page!</p>
</t:layout>
</html>
এখানে:
<t:layout page="layout">
: এটি নির্দেশ করে যে এই পেজটি layout.tml
লেআউট পেজে ইনক্লুড হবে। এর মধ্যে যে কন্টেন্ট থাকবে, তা layout পেজের content
সেকশনে ইনসার্ট হবে।Tapestry এর template এবং layout সিস্টেম ডেভেলপারদের জন্য একটি শক্তিশালী টুলসেট সরবরাহ করে যা দ্রুত, কার্যকর এবং পুনঃব্যবহারযোগ্য UI তৈরি করতে সহায়তা করে। Tapestry এর টেমপ্লেট সিস্টেমের মাধ্যমে ডেভেলপাররা HTML এবং TML ট্যাগের মাধ্যমে কম্পোনেন্টগুলির মধ্যে যোগাযোগ করতে পারেন এবং layout ব্যবস্থার মাধ্যমে একটি কনসিস্টেন্ট ইউজার ইন্টারফেস তৈরি করতে সক্ষম হন।
Apache Tapestry একটি component-based web framework, যা UI (User Interface) উপাদানগুলোকে components হিসেবে তৈরি করে। Tapestry অ্যাপ্লিকেশন তৈরির ক্ষেত্রে HTML এবং Tapestry টেমপ্লেট (TML) এর মধ্যে ইন্টিগ্রেশন একটি গুরুত্বপূর্ণ অংশ, কারণ Tapestry টেমপ্লেটের মাধ্যমে HTML ট্যাগগুলোর সাথে Tapestry কম্পোনেন্টসের dynamic behavior (যেমন ডেটা বাউন্ডিং, ইভেন্ট হ্যান্ডলিং) যোগ করা হয়।
এখানে HTML এবং Tapestry টেমপ্লেট ইন্টিগ্রেশনের বিষয়টি বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
Tapestry টেমপ্লেট সাধারণত TML (Tapestry Markup Language) ফাইল হিসেবে থাকে, যা মূলত HTML এর মত দেখতে হলেও Tapestry ট্যাগ এবং অন্যান্য বিশেষ ফিচার সমর্থন করে। TML ফাইলগুলো .tml এক্সটেনশন নিয়ে থাকে।
Tapestry টেমপ্লেট সাধারণত দুইটি অংশে বিভক্ত থাকে:
Tapestry এর টেমপ্লেটে Tapestry Tags ব্যবহার করা হয়, যা সাধারণ HTML ট্যাগের মতো দেখায় তবে তাদের কাছে কিছু অতিরিক্ত ফিচার থাকে, যেমন ডেটা বাউন্ডিং, ইভেন্ট হ্যান্ডলিং এবং বিভিন্ন অ্যাপ্লিকেশন লজিক। সাধারণ HTML ট্যাগের পরিবর্তে Tapestry এর ট্যাগগুলি ব্যবহৃত হয় যা t:
প্রিফিক্স দিয়ে শুরু হয়।
উদাহরণ:
<t:form t:id="myForm">
<t:textfield t:id="name" value="model.name" />
<t:button t:id="submit" label="Submit" />
</t:form>
এখানে:
t:form
: একটি Tapestry ফর্ম কম্পোনেন্ট।t:textfield
: একটি টেক্সটফিল্ড কম্পোনেন্ট।t:button
: একটি বাটন কম্পোনেন্ট।এটি HTML এর মতোই, তবে Tapestry এর জন্য আরও কার্যকারিতা যোগ করা হয়েছে।
UI কম্পোনেন্ট
উদাহরণ:
<t:textfield t:id="username" value="model.username" />
এখানে username
নামের একটি ইনপুট ফিল্ড তৈরি হচ্ছে, যা model.username
ডেটার সাথে বাউন্ড করা হয়েছে।
ডেটা বাউন্ডিং
model.username
একটি ডেটা ভ্যালু, যা ইনপুট ফিল্ডের মাধ্যমে প্রদর্শিত হয়।উদাহরণ:
<t:textfield t:id="username" value="model.username" />
এখানে model.username
পেজের Java ক্লাসে থাকা একটি প্রপার্টির মান হিসেবে প্রদর্শিত হবে।
ইভেন্ট হ্যান্ডলিং
submit
বাটনে ক্লিক করার মাধ্যমে একটি Java ক্লাসের মেথড কল করা যায়।উদাহরণ:
<t:button t:id="submitButton" label="Submit" onclick="submitForm()" />
এখানে, submitButton
ক্লিক করলে submitForm()
মেথড কল হবে যা Java ক্লাসে লেখা থাকবে।
HTML স্ট্রাকচার
Tapestry টেমপ্লেট ফাইলগুলো HTML এর মতো দেখতে হলেও এতে Tapestry Tags এর মাধ্যমে dynamic behavior যোগ করা হয়। HTML ট্যাগগুলির মতোই <div>
, <span>
, <p>
, <ul>
ইত্যাদি ট্যাগ ব্যবহার করা যায়, কিন্তু Tapestry কম্পোনেন্টগুলোর জন্য TML ট্যাগ ব্যবহার করা হয়।
উদাহরণ:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Tapestry Example</title>
</head>
<body>
<h1>Welcome to Apache Tapestry!</h1>
<t:textfield t:id="name" value="model.name" />
<t:button t:id="submitButton" label="Submit" onclick="submitForm()" />
</body>
</html>
Dynamic Content Integration
Tapestry এর মাধ্যমে আপনি HTML টেমপ্লেটে dynamic content যোগ করতে পারেন। উদাহরণস্বরূপ, কোনো পেজের টেমপ্লেট ফাইলের মধ্যে model
ডেটার মানকে HTML ইনপুট বা লেবেলে বাউন্ড করতে পারেন।
উদাহরণ:
<p>Your name is: <t:output value="model.name" /></p>
CSS এবং JavaScript ইনটিগ্রেশন
Tapestry HTML টেমপ্লেটের মধ্যে স্টাইল এবং স্ক্রিপ্ট ফাইলগুলো ইনটিগ্রেট করতে @Import অথবা <link>
এবং <script>
ট্যাগ ব্যবহার করতে পারে।
উদাহরণ:
<t:import value="context:styles.css" />
<script src="js/script.js"></script>
এখানে styles.css
ফাইলটি টেমপ্লেটে সিএসএস স্টাইল হিসেবে ইমপোর্ট করা হবে।
Apache Tapestry এবং HTML টেমপ্লেটের মধ্যে ইন্টিগ্রেশন একটি গুরুত্বপূর্ণ বিষয়, যা UI এবং ডাইনামিক কার্যকারিতা একত্রিত করতে সহায়ক। Tapestry এর TML ফাইল HTML এর মতো দেখতে হলেও এতে Tapestry Tags এবং dynamic behavior যুক্ত থাকে, যেমন ডেটা বাউন্ডিং, ইভেন্ট হ্যান্ডলিং, এবং কম্পোনেন্ট ব্যবহারের মাধ্যমে পুনরায় ব্যবহারযোগ্য UI উপাদান তৈরি করা যায়। Tapestry এর মাধ্যমে HTML এবং TML এর সংমিশ্রণটি ডেভেলপারদের একটি শক্তিশালী, মডুলার, এবং কার্যকর অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।
Apache Tapestry এর Layout এবং Partial Templates দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ওয়েব অ্যাপ্লিকেশন তৈরিতে পুনরায় ব্যবহারযোগ্য এবং সংগঠিত UI নির্মাণে সাহায্য করে। Tapestry ফ্রেমওয়ার্কে Layout এবং Partial Templates ব্যবহারের মাধ্যমে UI ডিজাইন আরও মডুলার এবং রিইউজেবল করা সম্ভব।
Layout Templates Tapestry অ্যাপ্লিকেশনের UI এর একটি সাধারণ কাঠামো প্রদান করে। এগুলি সাধারণত হেডার, ফুটার, নেভিগেশন বার, এবং সাইডবার সহ ওয়েব পেজের সাধারণ উপাদানগুলির জন্য ব্যবহৃত হয়। Layout টেমপ্লেট ব্যবহার করে আপনি পেজের আংশিক অংশগুলো একবার তৈরি করে, পুরো অ্যাপ্লিকেশন জুড়ে পুনরায় ব্যবহার করতে পারেন।
<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title><t:body/></title> <!-- Page-specific title -->
</head>
<body>
<header>
<h1>My Tapestry Application</h1>
<nav>
<t:link page="home">Home</t:link> |
<t:link page="about">About</t:link> |
<t:link page="contact">Contact</t:link>
</nav>
</header>
<main>
<t:body/> <!-- Main content from the specific page -->
</main>
<footer>
<p>© 2024 My Tapestry Application</p>
</footer>
</body>
</html>
এই Layout টেমপ্লেটটি অ্যাপ্লিকেশনের প্রতিটি পেজে ব্যবহৃত হবে, এবং প্রতিটি পেজের কনটেন্ট t:body
ট্যাগের মাধ্যমে এখানে সন্নিবেশিত হবে।
আপনি আপনার পেজের মধ্যে Layout টেমপ্লেট ব্যবহার করতে পারবেন নিম্নলিখিতভাবে:
<t:layout page="layout">
<t:body>
<h2>Welcome to the Home Page!</h2>
<p>This is the content of the home page.</p>
</t:body>
</t:layout>
এখানে layout
টেমপ্লেটটি অ্যাপ্লিকেশনের হেডার, ফুটার এবং নেভিগেশন বার প্রদর্শন করবে, এবং t:body
ট্যাগের মাধ্যমে পেজের কনটেন্ট রেন্ডার হবে।
Partial Templates Tapestry তে ছোট, পুনরায় ব্যবহারযোগ্য UI অংশ তৈরি করতে ব্যবহৃত হয়। এগুলি সাধারণত UI এর পুনঃব্যবহারযোগ্য অংশগুলো, যেমন একটি ফর্ম, টেবিল, অথবা বাটন গঠন করতে ব্যবহার করা হয়। Partial Template গুলি সাধারণভাবে বড় Layout টেমপ্লেটের মধ্যে সন্নিবেশিত হয়, যাতে পুনরায় ব্যবহারের সুবিধা পাওয়া যায়।
ধরা যাক, আমরা একটি login-form তৈরি করতে চাই:
<!-- login-form.tml -->
<t:form action="login">
<t:textfield t:id="username" value="username" label="Username" />
<t:passwordfield t:id="password" value="password" label="Password" />
<t:submit value="Login" />
</t:form>
এটি একটি লগইন ফর্ম টেমপ্লেট, যা সবার জন্য পুনঃব্যবহারযোগ্য।
আপনি এই Partial Template টিকে অন্য পেজে ব্যবহার করতে পারবেন নিম্নলিখিতভাবে:
<t:layout page="layout">
<t:body>
<h2>Login Page</h2>
<t:include page="login-form"/>
</t:body>
</t:layout>
এখানে, login-form
Partial Template টি মূল পেজের মধ্যে অন্তর্ভুক্ত করা হয়েছে।
Layout টেমপ্লেটগুলি আপনার অ্যাপ্লিকেশনকে একটি সাধারণ কাঠামো প্রদান করে, এবং Partial Templates ছোট UI অংশগুলিকে পুনরায় ব্যবহারযোগ্য করে তোলে। এভাবে, Tapestry আপনাকে UI ডিজাইনকে মডুলার এবং পুনরায় ব্যবহারযোগ্য করে তোলে, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে উন্নত কার্যকারিতা এবং কোড রিইউজেবিলিটি আনে।
Tapestry এর Layout এবং Partial Templates UI ডিজাইনে মডুলারিটি এবং পুনরায় ব্যবহারযোগ্যতা নিশ্চিত করে। Layout Templates অ্যাপ্লিকেশনের সাধারণ কাঠামো তৈরি করতে ব্যবহৃত হয়, যা সম্পূর্ণ অ্যাপ্লিকেশন জুড়ে ব্যবহার করা যায়, এবং Partial Templates ছোট UI উপাদান তৈরির জন্য ব্যবহৃত হয়, যা সহজে অন্য পেজে অন্তর্ভুক্ত করা যায়। এই বৈশিষ্ট্যগুলি Tapestry কে একটি শক্তিশালী এবং নমনীয় ফ্রেমওয়ার্ক হিসেবে প্রতিষ্ঠিত করে।
Apache Tapestry একটি component-based ফ্রেমওয়ার্ক, যেখানে UI উপাদানগুলি বিভিন্ন কম্পোনেন্ট এবং টেমপ্লেটের মাধ্যমে গঠন করা হয়। Tapestry-তে block এবং region দুটি শক্তিশালী কনসেপ্ট রয়েছে, যা আপনাকে টেমপ্লেটের মধ্যে পুনঃব্যবহারযোগ্য অংশ এবং কাঠামো তৈরি করতে সহায়তা করে। এই কনসেপ্ট দুটি ডিজাইন প্যাটার্নের মতো কাজ করে, যা UI কাস্টমাইজেশন এবং রিইউজেবল টেমপ্লেট তৈরি করতে ব্যবহৃত হয়।
Tapestry তে block একটি বিশেষ ধরনের উপাদান যা সাধারণত reusable content বা sections ধারণ করতে ব্যবহৃত হয়। ব্লক মূলত টেমপ্লেটে কাস্টমাইজড কোড বা কনটেন্ট রাখার জন্য ব্যবহৃত হয়, এবং আপনি বিভিন্ন কম্পোনেন্ট বা পেজে সেগুলোকে রেন্ডার করতে পারেন।
ব্লক তৈরি করতে আপনি Tapestry Tags ব্যবহার করবেন, এবং তা template ফাইলে সন্নিবেশিত হবে। ব্লক সাধারণত একটি নির্দিষ্ট অংশ বা ডিভাইডারের মাধ্যমে রেন্ডার করা হয়।
<t:block t:id="header">
<h1>Welcome to My Website!</h1>
</t:block>
এখানে, header
ব্লকটি একটি h1 ট্যাগের মধ্যে "Welcome to My Website!" টেক্সট ধারণ করছে। এই ব্লকটি পরে টেমপ্লেটে বা অন্যান্য কম্পোনেন্টে রেন্ডার করা যাবে।
ব্লক রেন্ডার করতে, t:insert ট্যাগ ব্যবহার করতে হবে:
<div>
<t:insert t:id="header"/>
</div>
এই কোডটি header
ব্লকটির কন্টেন্টকে পেজে রেন্ডার করবে যেখানে <t:insert>
ট্যাগটি ব্যবহৃত হয়েছে।
Tapestry-তে region হল এমন একটি কনসেপ্ট যা পেজ বা টেমপ্লেটের একটি নির্দিষ্ট অংশকে dynamic বা customized করার জন্য ব্যবহৃত হয়। একটি region মূলত একটি UI অংশ বা সেকশন যা একটি ব্লকের মতো ডাইনামিক্যালি কনটেন্ট দিয়ে পূর্ণ হতে পারে।
একটি রিজন তৈরি করতে, আপনাকে t:region ট্যাগ ব্যবহার করতে হবে। এটি একটি কাস্টম আউটপুট তৈরি করবে যা অন্য কম্পোনেন্ট বা পেজে ইনসার্ট করা যেতে পারে।
<div>
<t:region t:id="content">
<p>This is the default content.</p>
</t:region>
</div>
এখানে, content
নামে একটি রিজন তৈরি করা হয়েছে, যেখানে একটি ডিফল্ট কন্টেন্ট (This is the default content.
) প্রদান করা হয়েছে।
যখন আপনি একটি রিজন রেন্ডার করতে চান, তখন t:insert ট্যাগ ব্যবহার করতে পারেন:
<div>
<t:insert t:id="content"/>
</div>
এটি content
রিজনটিকে রেন্ডার করবে, এবং যদি রিজনে কাস্টম কন্টেন্ট ইনপুট করা হয়, তবে সেটি পরিবর্তন হবে।
বৈশিষ্ট্য | ব্লক (Block) | রিজন (Region) |
---|---|---|
ডিফিনেশন | ব্লক হলো একটি কাস্টম বা পুনরায় ব্যবহারযোগ্য UI সেকশন যা কম্পোনেন্ট বা পেজে রেন্ডার করা হয়। | রিজন হলো একটি ডাইনামিক সেকশন যা কাস্টম কন্টেন্ট দ্বারা পূর্ণ হতে পারে। |
রেন্ডারিং | ব্লককে সাধারণত t:insert বা t:render দিয়ে রেন্ডার করা হয়। | রিজনকে t:insert এর মাধ্যমে রেন্ডার করা হয়। |
কাস্টম কন্টেন্ট | ব্লক নিজেই কন্টেন্ট ধারণ করে যা টেমপ্লেটের মধ্যে প্রদর্শিত হয়। | রিজন একটি placeholder, যা বাইরের কন্টেন্ট দ্বারা পূর্ণ হয়। |
ব্যবহার | ব্লক সাধারণত কাস্টম হেডার, ফুটার বা অন্যান্য স্ট্যাটিক কন্টেন্টের জন্য ব্যবহার হয়। | রিজন সাধারণত টেমপ্লেটের নির্দিষ্ট অংশ পরিবর্তন করার জন্য ব্যবহৃত হয়। |
ব্লক এবং রিজন Tapestry ফ্রেমওয়ার্কে UI এর পুনরায় ব্যবহারযোগ্য এবং ডাইনামিক অংশ তৈরি করতে ব্যবহৃত হয়। ব্লকগুলি সাধারণত কাস্টম কন্টেন্ট ধারণ করতে ব্যবহৃত হয় এবং এগুলি পেজ বা কম্পোনেন্টে রেন্ডার করা হয়, যেখানে রিজনগুলি টেমপ্লেটে ডাইনামিক কন্টেন্ট ইনপুট করতে এবং সেই অংশটি কাস্টমাইজ করতে ব্যবহৃত হয়। এই কনসেপ্ট দুটি টেমপ্লেটের মধ্যে কার্যকর এবং পুনরায় ব্যবহারযোগ্য কন্টেন্ট তৈরি করতে সাহায্য করে, যা Tapestry অ্যাপ্লিকেশনগুলোকে আরও নমনীয় এবং শক্তিশালী করে তোলে।
Apache Tapestry একটি component-based ওয়েব ফ্রেমওয়ার্ক, যা UI উপাদানগুলি পুনঃব্যবহারযোগ্য এবং মডুলার করে তোলে। Tapestry তে Master Pages এবং Nested Layouts ব্যবহারের মাধ্যমে একটি একক UI ডিজাইন পুনরায় ব্যবহারযোগ্য করা যায় এবং ডেভেলপাররা একটি কেন্দ্রীয় লেআউট ব্যবহার করে তাদের অ্যাপ্লিকেশন ডিজাইনকে সহজে কাস্টমাইজ করতে পারেন।
Tapestry তে Master Page হলো একটি মূল লেআউট যা অ্যাপ্লিকেশনটির শেয়ার্ড UI ডিজাইন এবং কাঠামোকে সংজ্ঞায়িত করে। মাস্টার পেজের মাধ্যমে আপনি একটি সাধারণ লেআউট তৈরি করতে পারেন এবং সেই লেআউটটি বিভিন্ন পেজে পুনঃব্যবহার করতে পারেন।
মাস্টার পেজ মূলত HTML টেমপ্লেটের আকারে তৈরি হয় এবং এটি বিভিন্ন পেজের জন্য একটি শেয়ার্ড কাঠামো প্রদান করে, যেমন header, footer, এবং navigation।
মাস্টার পেজের টেমপ্লেট তৈরি করা
মাস্টার পেজের টেমপ্লেটটি একটি সাধারণ HTML ফাইল যা শেয়ারড UI উপাদান ধারণ করে।
উদাহরণ:
<!-- MasterPage.tml -->
<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Tapestry Application</title>
</head>
<body>
<header>
<h1>My Tapestry Application</h1>
<nav>
<ul>
<li><a href="/home">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
</header>
<div id="content">
<!-- Content will be inserted here -->
<t:insert />
</div>
<footer>
<p>© 2024 My Company</p>
</footer>
</body>
</html>
মাস্টার পেজের Java ক্লাস তৈরি করা
মাস্টার পেজে যুক্ত Java ক্লাসটি টেমপ্লেটের জন্য কাজ করবে। সাধারণত, এটি একটি সহজ Layout
ক্লাস হতে পারে যা Tapestry কম্পোনেন্টের মতো কাজ করে।
উদাহরণ:
@Import(stylesheet = "style.css")
public class MasterPage {
// কোন বিশেষ লজিকের প্রয়োজন হলে এখানে যুক্ত করতে পারেন।
}
Tapestry তে Nested Layouts এর মাধ্যমে আপনি একটি মূল মাস্টার পেজে একাধিক উপ-layout (sub-layout) বা nested layouts অন্তর্ভুক্ত করতে পারেন। এতে বিভিন্ন পেজের মধ্যে একটি সাধারণ কাঠামো বজায় থাকে, কিন্তু প্রত্যেকটি পেজে পৃথক পৃথক কনটেন্ট অন্তর্ভুক্ত করা হয়।
Sub-Layout টেমপ্লেট তৈরি করা
একটি sub-layout টেমপ্লেট তৈরি করুন যা মাস্টার পেজের মধ্যে অন্তর্ভুক্ত হবে। উদাহরণস্বরূপ, HomeLayout.tml
একটি পেজের জন্য একটি sub-layout হতে পারে।
<!-- HomeLayout.tml -->
<t:layout>
<h2>Welcome to the Home Page</h2>
<p>This is the main content for the home page.</p>
</t:layout>
Sub-Layout এর Java ক্লাস তৈরি করা
sub-layout এর জন্য একটি Java ক্লাস তৈরি করুন যা মাস্টার পেজের কাঠামো অনুসরণ করে।
@Import(stylesheet = "home.css")
public class HomeLayout {
// উপযুক্ত লজিক বা ইনজেকশন করতে পারেন
}
Main Page এর Layout অন্তর্ভুক্ত করা
আপনি যেকোনো পেজে এই sub-layout বা nested layout ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
<!-- HomePage.tml -->
<t:layout>
<t:insert page="HomeLayout"/>
</t:layout>
এখানে HomeLayout
sub-layout টেমপ্লেটের কনটেন্ট HomePage
তে ইনসার্ট হবে।
মাস্টার পেজ এবং Nested Layouts Tapestry তে UI কাঠামো সহজে পুনঃব্যবহারযোগ্য এবং কাস্টমাইজযোগ্য করতে সহায়ক। মাস্টার পেজ সাধারণভাবে অ্যাপ্লিকেশনের শেয়ারড UI উপাদান (যেমন হেডার, ফুটার, সাইডবার) ধারণ করে, আর Nested Layouts এর মাধ্যমে আপনি সেই কাঠামোতে বিভিন্ন পেজের জন্য কনটেন্ট অন্তর্ভুক্ত করতে পারেন। এটি বড় অ্যাপ্লিকেশন গুলি মেইনটেইন করা এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ানোর জন্য খুবই কার্যকর।
Read more