XHTML पृष्ठ में किसी अन्य XHTML पृष्ठ को शामिल करने का सबसे सही तरीका क्या है? मैं विभिन्न तरीकों से कोशिश कर रहा हूं, उनमें से कोई भी काम नहीं कर रहा है।
XHTML पृष्ठ में किसी अन्य XHTML पृष्ठ को शामिल करने का सबसे सही तरीका क्या है? मैं विभिन्न तरीकों से कोशिश कर रहा हूं, उनमें से कोई भी काम नहीं कर रहा है।
जवाबों:
<ui:include>
सबसे बुनियादी तरीका है <ui:include>
। शामिल सामग्री को अंदर रखा जाना चाहिए <ui:composition>
।
मास्टर पृष्ठ का किकऑफ उदाहरण /page.xhtml
:
<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head>
<title>Include demo</title>
</h:head>
<h:body>
<h1>Master page</h1>
<p>Master page blah blah lorem ipsum</p>
<ui:include src="/WEB-INF/include.xhtml" />
</h:body>
</html>
पृष्ठ शामिल करें /WEB-INF/include.xhtml
(हाँ, यह अपनी संपूर्णता में फ़ाइल है, बाहर के कोई भी टैग <ui:composition>
अनावश्यक हैं क्योंकि उन्हें फेसलेट्स द्वारा वैसे भी अनदेखा किया जाता है):
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h2>Include page</h2>
<p>Include page blah blah lorem ipsum</p>
</ui:composition>
इसके द्वारा खोलने की आवश्यकता है /page.xhtml
। ध्यान दें कि आपको दोहराने की आवश्यकता नहीं है <html>
, <h:head>
और <h:body>
इसमें शामिल फ़ाइल के रूप में अन्यथा अमान्य HTML में परिणाम होगा ।
आप एक गतिशील ईएल अभिव्यक्ति का उपयोग कर सकते हैं <ui:include src>
। यह भी देखें कि नेविगेशन मेनू द्वारा कैसे अजाक्स-रिफ्रेश डायनामिक में सामग्री शामिल है? (जेएसएफ एसपीए) ।
<ui:define>
/<ui:insert>
सहित का एक और अधिक उन्नत तरीका अस्थायी है । इसमें मूल रूप से दूसरा तरीका शामिल है। मास्टर टेम्पलेट पेज को <ui:insert>
परिभाषित टेम्पलेट सामग्री डालने के लिए स्थानों की घोषणा करने के लिए उपयोग करना चाहिए । टेम्प्लेट क्लाइंट पेज जो मास्टर टेम्प्लेट पेज का उपयोग <ui:define>
कर रहा है, उसे टेम्प्लेट सामग्री को सम्मिलित करने के लिए उपयोग करना चाहिए जिसे डाला जाना है।
मास्टर टेम्प्लेट पृष्ठ /WEB-INF/template.xhtml
(एक डिज़ाइन संकेत के रूप में: शीर्ष लेख, मेनू और पाद लेख बदले में <ui:include>
फ़ाइलें भी हो सकते हैं):
<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:head>
<title><ui:insert name="title">Default title</ui:insert></title>
</h:head>
<h:body>
<div id="header">Header</div>
<div id="menu">Menu</div>
<div id="content"><ui:insert name="content">Default content</ui:insert></div>
<div id="footer">Footer</div>
</h:body>
</html>
टेम्प्लेट क्लाइंट पेज /page.xhtml
( template
विशेषता पर ध्यान दें ; यहां भी, यह संपूर्णता में फ़ाइल है):
<ui:composition template="/WEB-INF/template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:define name="title">
New page title here
</ui:define>
<ui:define name="content">
<h1>New content here</h1>
<p>Blah blah</p>
</ui:define>
</ui:composition>
इसके द्वारा खोलने की आवश्यकता है /page.xhtml
। यदि कोई नहीं है <ui:define>
, तो अंदर डिफ़ॉल्ट सामग्री <ui:insert>
प्रदर्शित की जाएगी, यदि कोई हो।
<ui:param>
आप मापदंडों को <ui:include>
या इसके <ui:composition template>
द्वारा पारित कर सकते हैं <ui:param>
।
<ui:include ...>
<ui:param name="foo" value="#{bean.foo}" />
</ui:include>
<ui:composition template="...">
<ui:param name="foo" value="#{bean.foo}" />
...
</ui:composition >
शामिल / टेम्पलेट फ़ाइल के अंदर, यह उपलब्ध होगा #{foo}
। यदि आपको "कई" मापदंडों को पास करने की आवश्यकता है <ui:include>
, तो आप शामिल फ़ाइल को टैगफाइल के रूप में पंजीकृत करने पर बेहतर विचार करेंगे, ताकि आप अंततः इसका उपयोग कर सकें <my:tagname foo="#{bean.foo}">
। यह भी देखें कि कब उपयोग करना है <ui: शामिल करें>, टैग फ़ाइलें, मिश्रित घटक और / या कस्टम घटक?
तुम भी पूरे सेम, विधियों और मापदंडों के माध्यम से पारित कर सकते हैं <ui:param>
। जेएसएफ 2 भी देखें : फेसलेट्स उप दृश्य (यूआई: शामिल और यूआई: परम) का उपयोग करने के लिए एक तर्क सहित एक कार्रवाई कैसे पारित करें?
जिन फ़ाइलों को केवल अपने URL में प्रवेश / अनुमान लगाकर सार्वजनिक रूप से पहुंच योग्य नहीं माना जाता है, उन्हें /WEB-INF
फ़ोल्डर में रखने की आवश्यकता होती है , जैसे ऊपर फ़ाइल और टेम्पलेट फ़ाइल को उपरोक्त उदाहरण में शामिल करें। यह भी देखें कि मुझे कौन सी XHTML फाइलें / WEB-INF और कौन सी नहीं डालनी हैं?
बाहर किसी भी मार्कअप (HTML कोड) <ui:composition>
और होने की आवश्यकता नहीं है <ui:define>
। आप कोई भी डाल सकते हैं, लेकिन उन्हें फेसलेट्स द्वारा अनदेखा किया जाएगा। वहां मार्कअप लगाना केवल वेब डिजाइनरों के लिए उपयोगी है। यह भी देखें कि क्या पूरी परियोजना का निर्माण किए बिना JSF पेज चलाने का कोई तरीका है?
HTML5 सिद्धांत इन दिनों अनुशंसित सिद्धांत है, "इसके बावजूद कि यह एक XHTML फ़ाइल है। आपको XHTML को एक भाषा के रूप में देखना चाहिए जो आपको XML आधारित टूल का उपयोग करके HTML आउटपुट का उत्पादन करने की अनुमति देता है। यह भी देखें कि क्या HTML 4/5 के साथ JSF + फेसलेट का उपयोग करना संभव है? और JavaServer चेहरे 2.2 और HTML5 का समर्थन करता है, XHTML अभी भी क्यों इस्तेमाल किया जा रहा है ।
CSS / JS / छवि फ़ाइलों को गतिशील रूप से स्थानांतरित करने योग्य / स्थानीय / संस्करणित संसाधनों के रूप में शामिल किया जा सकता है। यह भी देखें कि फेसलेट्स टेम्पलेट में CSS / JS / छवि संसाधन कैसे देखें ?
आप फेसलेट फ़ाइलों को एक पुन: प्रयोज्य JAR फ़ाइल में रख सकते हैं। साझा कोड के साथ कई JSF परियोजनाओं के लिए संरचना भी देखें ।
उन्नत फेसलेट्स टेम्प्लेटिंग के वास्तविक विश्व उदाहरणों के लिए, जावा ईई किकऑफ़ ऐप स्रोत कोड और ओम्नीफेस शोकेस साइट स्रोत कोड के src/main/webapp
फ़ोल्डर की जांच करें ।
<ui:composition ...>
मुखपत्र के अंदर घोषणा करते हैं तो आपको <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
भी इस तरह के सिद्धांत की घोषणा करनी होगी , अन्यथा entity referenced but not declared
HTML संस्थाओं का उपयोग करते समय आपको एक त्रुटि मिलती है।
शामिल पृष्ठ:
<!-- opening and closing tags of included page -->
<ui:composition ...>
</ui:composition>
पेज सहित:
<!--the inclusion line in the including page with the content-->
<ui:include src="yourFile.xhtml"/>
ui:composition
ऊपर दिखाए गए अनुसार शुरू करते हैं ।ui:include
को शामिल करते हैं जिसमें xHTML फ़ाइल शामिल है जैसा कि ऊपर दिखाया गया है।<ui:include src="/yourFile.xhtml"/>
है या<ui:include src="/WEB-INF/yourFile.xhtml"/>