<ui:include>
और <ui:decorate>
के बीच मुख्य अंतर यह है कि <ui:decorate>
, जबकि <ui:include>
एक मौजूदा और पहले से ही-पूर्वनिर्धारित टेम्पलेट शामिल करने का इरादा है उपयोगकर्ता-निर्धारित टेम्पलेट घटकों की प्रविष्टि की अनुमति देने का इरादा है है।
इसका वास्तव में मतलब है कि <ui:decorate>
<ui:define>
को अपने शरीर में उपयोगकर्ता द्वारा परिभाषित टेम्पलेट घटकों के लिए समर्थन देता है और इसे टेम्पलेट के अंदर <ui:insert>
स्थान पर डाल सकता है।
/WEB-INF/templates/field.xhtml
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<h:outputLabel for="#{id}" value="#{label}" />
<ui:insert name="input" />
<h:message id="#{id}_message" for="#{id}" />
</ui:composition>
/page.xhtml
<h:panelGrid columns="3">
<ui:decorate template="/WEB-INF/templates/field.xhtml">
<ui:param name="label" value="Foo" />
<ui:param name="id" value="foo" />
<ui:define name="input">
<h:inputText id="foo" value="#{bean.foo}" required="true" />
</ui:define>
</ui:decorate>
<ui:decorate template="/WEB-INF/templates/field.xhtml">
<ui:param name="label" value="Bar" />
<ui:param name="id" value="bar" />
<ui:define name="input">
<h:selectBooleanCheckbox id="bar" value="#{bean.bar}" required="true" />
</ui:define>
</ui:decorate>
...
</h:panelGrid>
ध्यान दें कि यह की प्रत्येक कोशिका में अच्छी तरह से घटकों renders:
यहाँ दिखाने के लिए जहां यह किया जा सकता है एक -somewhat clumsy- उदाहरण है पैनल ग्रिड। दोबारा, यह विशेष उदाहरण बहुत बेकार है, मैंने अभी इसके बजाय tag file का उपयोग किया होगा। केवल अगर यह एक बड़ा खंड था, उदा। एक पूरा रूप जिसका उदा। इसका हेडर या फ़ूटर अनुकूलन योग्य होना चाहिए, फिर <ui:decorate>
उचित होगा।
<ui:decorate>
का एक और बड़ा लाभ यह है कि यह आपको टेम्पलेट के साथ एक समग्र घटक का उपयोग करने की अनुमति देता है। यह भी देखें Is it possible to use template with composite component in JSF 2?
मुझे यकीन नहीं है कि मैं आपकी ठोस समस्या को समझता हूं या नहीं। तो मैं कहूंगा, हाँ तुम पागल हो :) – BalusC
@ बालससी मैं वास्तव में पागल हो सकता हूं, लेकिन मैं एक ठोस समस्या नहीं बता रहा हूं, सिर्फ एक सामान्य सिद्धांत। मैं यह पता लगाने की कोशिश कर रहा हूं कि इन दोनों संरचनाओं के बीच वास्तविक अंतर क्या है और मुझे कोई भी नहीं मिला। संभवतः ui: इसमें यूई का समर्थन नहीं है: परिभाषित करें, परीक्षण करते समय मुझे अन्य समस्याएं आ रही हैं। – EJP
आह आप केवल वैचारिक अंतर के लिए पूछ रहे हैं? – BalusC