এই পদ্ধতির মধ্যে পার্থক্য কি?
ফেসলেট টেম্পলেট
ব্যবহারের Facelet (হিসাবে টেমপ্লেট <ui:composition>
, <ui:include>
এবং <ui:decorate>
) আপনি reuseable টেমপ্লেট মধ্যে প্রধান পৃষ্ঠার লেআউট টুকরা বিভক্ত করতে চান। যেমন শিরোনাম, মেনু, সামগ্রী, পাদচরণ ইত্যাদি er
উদাহরণ:
ফেসলেট ট্যাগ ফাইল
কোড ডুপ্লিকেশন রোধ / হ্রাস করতে আপনার যদি পুনরায় ব্যবহারযোগ্য গ্রুপের উপাদান থাকতে চান তবে ফেসলেট ট্যাগ ফাইলগুলি ব্যবহার করুন। যেমন লেবেল + ইনপুট + বার্তা উপাদানগুলির একটি গ্রুপ। সম্মিলিত উপাদানগুলির সাথে প্রধান পার্থক্যটি হ'ল কোনও ফেসলেট ট্যাগ ফাইলের আউটপুট কোনও একককে উপস্থাপন করে না UIComponent
এবং কোনও পরিস্থিতিতে যখন কোনও সংমিশ্রণ উপাদান যথেষ্ট না হয় তখন একমাত্র সমাধান হতে পারে। সাধারণত, <ui:include>
এক বা <ui:param>
একাধিকটির সাথে ম্যানেজ করা শিমের সম্পত্তি (এবং এইভাবে একটি হার্ডকোডযুক্ত মান নয়) পাস করে এমন একটি সংকেত যা অন্তর্ভুক্ত ফাইলটি একটি ট্যাগ ফাইল হতে পারে।
উদাহরণ:
যৌগিক উপাদান
আপনি যদি UIComponent
খাঁটি এক্সএমএল ব্যবহার করে একক দায়বদ্ধতার সাথে একটি একক এবং পুনঃব্যবহারযোগ্য কাস্টম তৈরি করতে চান তবে সম্মিলিত উপাদানগুলি ব্যবহার করুন । এই জাতীয় একটি যৌগিক উপাদান সাধারণত বিদ্যমান উপাদান এবং / অথবা এইচটিএমএলগুলির একগুচ্ছ থাকে এবং শারীরিকভাবে একক উপাদান হিসাবে উপস্থাপিত হয় এবং একক শিমের সম্পত্তিতে আবদ্ধ বলে মনে করা হয়। যেমন একটি উপাদান যা একটি একক প্রতিনিধিত্ব করে java.util.Date
3 নির্ভরশীল দ্বারা সম্পত্তি <h:selectOneMenu>
উপাদান, বা উপাদান সম্মিলন <p:fileUpload>
এবং <p:imageCropper>
একটি একক মধ্যে <my:uploadAndCropImage>
একটি একক কাস্টম উল্লেখ com.example.Image
সম্পত্তি হিসেবে সত্তা।
উদাহরণ:
কাস্টম উপাদান
যখনই ফেসলেট ট্যাগ ফাইল বা সংমিশ্রিত উপাদানগুলির সাথে কার্যকারিতা অর্জন করা যায় না তখন একটি কাস্টম উপাদান ব্যবহার করুন কারণ উপাদানগুলির মানক / উপলভ্য সেটগুলিতে সমর্থন না থাকায়। ওপেন সোর্স উপাদান উপাদান লাইব্রেরির যেমন প্রাইমফ্রিজস এবং ওমনিফ্রেসিসের সোর্স কোডে সমস্ত জায়গার উপর উদাহরণ পাওয়া যায় ।
ট্যাগ হ্যান্ডলার
আপনি যখন এইচটিএমএল আউটপুট উপস্থাপনের পরিবর্তে জেএসএফ উপাদান উপাদানটির বিল্ডিং নিয়ন্ত্রণ করতে চান, তখন আপনাকে কোনও উপাদানটির পরিবর্তে ট্যাগ হ্যান্ডলার ব্যবহার করা উচিত।
উদাহরণ:
উদাহরণ প্রকল্প
এখানে কিছু উদাহরণ প্রকল্প রয়েছে যা উপরে উল্লিখিত সমস্ত কৌশল ব্যবহার করে।
পারফরম্যান্স আলাদা হতে পারে?
প্রযুক্তিগতভাবে, পারফরম্যান্স উদ্বেগ নগণ্য। পছন্দটি কংক্রিটের কার্যকরী প্রয়োজনীয়তা এবং বাস্তবায়নের বিমূর্ততা, পুনরায় ব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণের চূড়ান্ত ডিগ্রির ভিত্তিতে করা উচিত। প্রতিটি পদ্ধতির নিজস্ব নির্ধারিত উদ্দেশ্য এবং সীমাবদ্ধতা রয়েছে।
যৌথ উপাদানগুলির ভিউ নির্মাণ / পুনরুদ্ধারকালে (বিশেষত: দৃশ্যের সংরক্ষণ / পুনরুদ্ধারের সময়) একটি উল্লেখযোগ্য ওভারহেড থাকে। এবং মোজারার পুরানো সংস্করণগুলিতে, সম্মিলিত উপাদানগুলির ডিফল্ট মানগুলি নির্ধারণের ক্ষেত্রে পারফরম্যান্সের সমস্যা ছিল, এটি ইতিমধ্যে ২.১.১৩ থেকে ঠিক করা হয়েছে। এছাড়াও, মোজারার একটি মেমরি ফুটো ছিল যখন কোনও <cc:attribute method-signature>
পদ্ধতিতে প্রকাশের জন্য ব্যবহৃত হয়, মূলত পুরো উপাদান গাছটি এইচটিটিপি সেশনে পুনরায় উল্লেখ করা হয়, এটি ২.১.২৯ / ২.২.৮ থেকে স্থির হয়েছে। মেমরি ফুটো নীচের মত পুরানো 2.1 সংস্করণে বাইপাস করা যেতে পারে:
<context-param>
<param-name>com.sun.faces.serializeServerState</param-name>
<param-value>true</param-value>
</context-param>
বা নীচের মত পুরানো ২.২ সংস্করণে:
<context-param>
<param-name>javax.faces.SERIALIZE_SERVER_STATE</param-name>
<param-value>true</param-value>
</context-param>
তবুও, যখন আপনার তুলনামূলকভাবে "প্রচুর" সংমিশ্রণ উপাদান থাকে এবং আপনি javax.faces.STATE_SAVING_METHOD
সেট client
করে রেখেছেন, তখন সম্পাদনাটি ব্যথা হবে। সম্মিলিত উপাদানগুলি অপব্যবহার করবেন না যদি আপনি কেবলমাত্র প্রাথমিক অন্তর্ভুক্ত ফাইল বা ট্যাগ ফাইল সহ ইতিমধ্যে সম্ভব বুনিয়াদি কার্যকারিতা চান। *.taglib.xml
ট্যাগ ফাইলের চেয়ে সম্মিলিত উপাদানগুলি পছন্দ করার অজুহাত হিসাবে কনফিগারেশনের স্বাচ্ছন্দ্য (পড়ুন: কোনও ফাইলের প্রয়োজন নেই) ব্যবহার করবেন না ।
মোজাররা ২.২.১০ বা তার বেশি বয়সী ব্যবহার করার সময়, উত্পাদন মোডের জন্য তুলনামূলকভাবে সংক্ষিপ্ত ফেসলেটগুলি রিফ্রেশ সময়কাল অক্ষম করতে ভুলবেন না:
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>-1</param-value>
</context-param>
উন্নয়নের জন্য এই সেটিংটি ব্যবহার করবেন না, অন্যথায় আপনাকে ফেসলেট ফাইলগুলিতে প্রতিফলিত হওয়ার জন্য পরিবর্তন পেতে পুরো সার্ভারটি পুনরায় চালু করতে হবে! মোজাররা ২.২.১১ এবং আরও নতুন এবং মাইফিসগুলি ইতিমধ্যে -1
কখন javax.faces.PROJECT_STAGE
সেট করা নেই তা ডিফল্ট Development
।