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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top