Adicionar JSF uicomponent como componente composto não renderiza nada
-
27-09-2019 - |
Pergunta
Eu tenho um costume UIComponent
, o que faz ok quando chamado diretamente do modelo de base base (eu acho que isso faz com que seja um filho direto de UIComponentBodyTag
). No entanto, quando é chamado dentro de um componente composto, nada acontece. Não tenho exceções, nada. Tudo o resto faz ok.
Então, enquanto isso funciona:
<h:body>
<x:myUiComponent />
</h:body>
Isso não funciona:
<h:body>
<demo:uiComponentWrapper />
</h:body>
uicomponentwrapper.xhtml:
<cc:implementation>
Before [<x:myUiComponent />] After
</cc:implementation>
Imprime simplesmente como Before [] After
.
Pela minha lógica, isso deve funcionar. o que estou perdendo? Running Mojarra 2.0.2.
Solução
Parece que UIComponent
's encodeAll(...)
é chamado quando é adicionado à página normalmente. No entanto, encodeBegin(...)
é chamado em vez disso, quando o componente está sendo adicionado como criança de um componente composto. Meu edifício de componente foi definido em encodeAll(...)
, que não foi executado ao adicionar o componente como uma criança componente composta.
Portanto, é apenas diferente em diferentes contextos. Pelo motivo, por que é assim, veja Pergunta sobre exatamente isso.