2013-05-30 7 views
6

को समग्र घटक मैं एक कस्टम घटक को एक समग्र घटक माइग्रेट करना होगा। यह उदाहरण अपेक्षाकृत सरल है, लेकिन समस्या का प्रदर्शन करता है: मेरे घटक के बच्चे (my:test) को किसी अन्य घटक में प्रस्तुत करने की आवश्यकता है। समग्र my:testC, एक उदाहरण है जो मैं का उपयोग नहीं करना चाहते हैं के रूप में, इसमाइग्रेट कस्टम घटक

<composite:implementation> 
    <p:panel> 
    <composite:insertChildren/> 
    </p:panel> 
</composite:implementation> 

जाहिर है की तरह लग रहे हैं (कम से कम मुझे आशा है कि मैं इस धारणा के साथ सही हूँ) मैं बस p:panelencodeBegin में दिखाया नहीं जा सकता ।

@FacesComponent("test") 
public class Test extends UIPanel 
{ 
    @Override 
    public void encodeBegin(FacesContext context) throws IOException 
    { 
    // ?? 
    } 

    @Override 
    public void encodeEnd(FacesContext context) throws IOException 
    { 
    // ?? 
    } 
} 

मैं इस तरह एक तरह से my:test उपयोग करना चाहते हैं:

<my:test> 
    <h:outputText value="some Text"/> 
</my:test> 

उत्पादन my:testC का उपयोग करने से एक ही होना चाहिए: कुछ पाठ एक PrimeFaces पैनल में प्रदान की गई। मैं अपने जावा क्लास में p:panel के उपयोग को कैसे एन्कोड कर सकता हूं?

+0

मुझे ठोस समस्या/प्रश्न (वास्तव में, कोई ठोस प्रश्न नहीं है) को समझ में नहीं आता है। क्या आप कंक्रीट से पूछ रहे हैं कि अपने कस्टम घटक में '' के समान आउटपुट को कैसे एन्कोड करना है? या आप ठोस रूप से पूछ रहे हैं कि उस भाग के लिए '' के डिफ़ॉल्ट एन्कोडर (प्रस्तुतकर्ता) का पुन: उपयोग कैसे करें? बच्चों को समस्या नहीं है क्योंकि 'एनकोडChildren()' यह सब स्वचालित रूप से करता है, पहले अनुच्छेद की अंतिम वाक्य अन्यथा इंगित करने के लिए प्रतीत होता है, जो भ्रमित है। – BalusC

+0

@ बाल्लूसी इस मुद्दे को देखने के लिए धन्यवाद। मैंने सवाल अपडेट किया है, उम्मीद है कि अब समझना बेहतर होगा। अपने प्रश्न का उत्तर देने के लिए: मैं 'p: panel' के समान आउटपुट को एन्कोड करने का प्रयास कर रहा हूं। – Thor

उत्तर

0

आपने इसे सही ढंग से देखा है। आप कस्टम घटक में "पी: पैनल" या किसी अन्य जेएसएफ मार्कअप को प्रस्तुत नहीं कर सकते हैं।

आप फिर भी क्या कर सकते हैं:

  • , आवेदन उदाहरण का उपयोग करते हुए उप-घटक इन्स्तांत एक पहलू या अपने कस्टम घटक के लिए बच्चे के रूप में यह जोड़ने और फिर अपने खुद के रेंडरर में इस पर एनकोड कहते हैं।

  • सीधे एचटीएमएल

  • उपयोग facelet एपीआई कि वर्तमान JSF में उपलब्ध होना चाहिए (मैं वास्तव में उस के साथ काम नहीं किया है)

  • उपयोग वेग या freemarker की तरह किसी भी अन्य टेम्पलेट प्रसंस्करण रेंडर करने के लिए प्रस्तुत करना एचटीएमएल।

संबंधित मुद्दे