سؤال

لدي مخصص UIComponent, ، الذي يجعل الموافقة على ما يرام عندما يتم استدعاؤه مباشرة من قالب الوجه الأساسي (أعتقد أن هذا يجعله طفلًا مباشرًا UIComponentBodyTag). ومع ذلك ، عندما يتم استدعاؤه داخل مكون مركب ، لا يحدث شيء. لا أحصل على استثناءات ، لا شيء. كل شيء آخر يجعل موافق.

لذلك في حين أن هذا يعمل:

<h:body>
    <x:myUiComponent />
</h:body>

هذا لا يعمل:

<h:body>
    <demo:uiComponentWrapper />
</h:body>

uicomponentwrapper.xhtml:

<cc:implementation>
    Before [<x:myUiComponent />] After
</cc:implementation>

يطبع ببساطة Before [] After.

من خلال منطقي ، يجب أن ينجح هذا. ماذا ينقصني؟ تشغيل Mojarra 2.0.2.

هل كانت مفيدة؟

المحلول

يبدو أن UIComponentencodeAll(...) يتم استدعاؤه عند إضافته إلى الصفحة بشكل طبيعي. لكن، encodeBegin(...) يسمى بدلاً من ذلك ، عند إضافة المكون كطفل لمكون مركب. تم تعريف مبنى المكون الخاص بي في encodeAll(...), ، والتي لم يتم تشغيلها عند إضافة المكون كطفل مكون مركب.

لذلك يختلف فقط في سياقات مختلفة. للسبب ، لماذا هو الحال ، انظر سؤال حول ذلك بالضبط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top