/ / एक कंपोनेंट के अंदर कंपोनेंट का संदर्भ कैसे दें

एक कनवर्टर - जेएसएफ, जेएसएफ -2, फेसलेट, समग्र घटक का उपयोग करते समय एक समग्र घटक के अंदर घटक का संदर्भ कैसे लें

मेरे पास एक मिश्रित घटक है जिसमें मुख्य रूप से एक SelectManyCheckbox घटक शामिल है। चूँकि इसे एक सामान्य तरीके से डिज़ाइन किया जाना चाहिए ताकि मैं कॉलिंग स्तर का उपयोग करके selectItems, ajax हैंडलिंग आदि में पास हो जाऊँ

<composite:insertChildren/>

यह अधिकांश सामान के लिए काफी अच्छी तरह से काम करता है। अब मुझे एक कनवर्टर के साथ इस मिश्रित घटक का उपयोग करने की आवश्यकता है। कनवर्टर के रूप में (एक प्रकार का ऑम्नीफेसेस "लिस्टकोनरेटर) हर समय आवश्यक नहीं होता है (कभी-कभी मैं ठोस संस्थाओं के मूल्य-बंधन चाहता हूं जो चुनिंदा वस्तुओं को वापस करते हैं, कभी-कभी मैं" टी) नहीं करता हूं, मैं इसे पारित करना चाहता हूं पहले बताए गए भागों के रूप में (जैसे selectItems, ajax इवेंट हैंडलिंग)।

यह देखते हुए कि समग्र घटक के अंदर घटक को संदर्भित करने के लिए "विशेषता" के लिए कनवर्टर टैग "एस" का उपयोग करना आवश्यक है। कम से कम मुझे जो समझ में आता है।

दुर्भाग्य से मेरे पास कोई विचार नहीं है कि क्या मूल्य होना चाहिएउपयोग किया गया। क्या मुझे समग्र घटक (नामकरण कंटेनर) का नाम शामिल करना है? क्या मुझे मुवक्किल का उपयोग करना होगा? मैंने बहुत संयोजन की कोशिश की है, लेकिन कनवर्टर को लागू नहीं किया गया है। जैसे ही मैंने कन्वर्टर टैग को कंपोजिट कंपोनेंट की परिभाषा के अंदर रखा, यह काम करता है।

चीजों को आसान बनाने के लिए, मान लें कि मेरे पास निम्नलिखित हैं:

<composite:interface>
<composite:attribute name="value" required="true"/>
</composite:interface>

<composite:implementation>
[...]
<h:selectManyCheckbox id="#{cc.attrs.id}" value="#{cc.attrs.value}">
<composite:insertChildren/>
</h:selectManyCheckbox>
[...]
</composite:implementation>

इस घटक का उपयोग निम्नानुसार किया जाना चाहिए:

<my:selectManyCheckbox id="myComponent" value="...">
<f:selectItems value="..."/>
<o:converter for="___" converterId="..."/>
</my:selectManyCheckbox>

शायद कोई मुझे एक संकेत दे सकता है कि "के लिए" विशेषता को क्या मूल्य दिया जाना चाहिए।

उत्तर:

जवाब के लिए 3 № 1

इसका जवाब मुझे खुद ही मिल गया। आप निम्नलिखित का उपयोग कर सकते हैं

<composite:interface>
<composite:attribute name="value" required="true"/>
<composite:editableValueHolder name="input_component">
</composite:interface>

<composite:implementation>
[...]
<h:selectManyCheckbox id="input_component" value="#{cc.attrs.value}">
<composite:insertChildren/>
</h:selectManyCheckbox>
[...]
</composite:implementation>

महत्वपूर्ण हिस्सा है editableValueHolder टैग। इस मिश्रित घटक का उपयोग करने वाले पृष्ठ से, अब आप उपयोग कर सकते हैं

<o:converter for="input_component" converterId="id_of_converter" />

यह वह उपाय है जो मेरे लिए काम कर रहा है। मुझे उम्मीद है कि इससे दूसरों को समान समस्या होने में मदद मिलेगी।