Tags JSTL em Facelets funcionam?

Java EE, Java Server Faces Add comments

Bom, já vi esta pergunta diversas vezes, e por diversos momentos eu também fiz a pergunta: porque o c:if não funciona corretamente, porque o c:forEach não executou minha lista?

Existe uma justificativa lógica para tal, que encontrei estes dias na seção de Faqs no WIKI do Facelets. Como eu já suspeitava tinha tudo a ver com o ciclo de execução das tags. Todas as tags JSTL em Facelets são rederizadas durante a restauração da view, ou seja, antes do processamento de ações, eventos e etc.

Este comportamento pode ser notado em tags do pacote core JSF, com exceção a tag f:verbatim. As tags facelets também são renderizadas durante a restauração da view, com exceção da ui:repeat.

Solução? Para substituir c:forEach use ui:repeat e para c:if crie um h:panelGroup controlando a visualização com o atributo rendered.

3 comentarios: “Tags JSTL em Facelets funcionam?”

  1. Augusto:

    Essa do panelGroup é pog neh marcos
    :S

  2. Marcos:

    O problema é que não há outro componente, porém h:painelGroup na grande maioria das vezes nem renderiza nada o que facilita a utilização dele para este fim.

  3. Rafael Ponte:

    O post foi interessante, porém só ficou simples e meio confusa a explicação.

    Eu fiquei de postar sobre isso, mas ando meio sem tempo, porém deixe-me tentar resumir:

    As tags JSP e JSTL funcionam em fase de buildtime, ou seja, elas devem ser usadas para construir a árvore de componentes, e não para renderizar (X)HTML. Os componentes faces é que se preocupam em renderizar código (X)HTML na fase de rendertime.

    Enfim, basicamente JSTL é para montar a árvore de componentes, e não decidir como será renderizado a GUI.

    Continue com teus post sobre JSF Marcos, infelizmente hoje o número de blogs nacionais sobre a tecnolgia ainda é escasso.

    Abraços.

Deixe seu comentario

WP Theme & Icons by N.Design Studio
Assine Assine os comentarios