将JSF UIComponent添加为复合组件子项不会呈现任何内容

时间:2010-11-23 16:16:20

标签: jsf jsf-2 uicomponents composite-component

我有一个自定义UIComponent,当直接从基本facelet模板调用时呈现正常(我想这会使它成为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。

1 个答案:

答案 0 :(得分:0)

似乎UIComponent的{​​{1}}在正常添加到页面时被调用。但是,当组件作为复合组件的子项添加时,将调用encodeAll(...)。我的组件构建在encodeBegin(...)中定义,在将组件添加为复合组件子项时未运行。

所以它在不同的背景下是不同的。出于这个原因,为什么会这样,请参阅question about exactly that