[RESOLVIDO]Dúvida com Facelets (Multi Level Facelets)

Olá pessoal, simple e direto. Tenho um template chamado index_template.xhtml, detro dele tenho as áreas cabeçalho, meio e rodapé, certo? Iplementei a index.xhtml nesse template, até aí tudo bem. Agora o problema é que no bloco principal(no meio) tenho um componente <p:tabView>(uma janela de várias abas) do primefaces e em cada aba gostária de chama páginas, como se fossem módulos independentes, do mesmo jeito que acontece no flex, é possível isso? Tentei aqui e nada…

Tipo:
Aqui está meu index_template

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <f:view>
        <h:head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <link href="#{facesContext.externalContext.requestContextPath}/resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
            <title>Teste</title>
        </h:head>

        <h:body>
            <div id="container">

                <div id="cabecalho">
                    <ui:insert name="cabecalho">
                        <!--Cabeçalho-->
                    </ui:insert>
                </div>

                <div id="corpo">
                    <ui:insert name="corpo">
                        <!--Corpo-->
                    </ui:insert>
                </div>

                <div id="rodape">
                    <div id="rodape-topo"/>
                    <span id="texto-rodape">Todos os direitos reservados. Recomendado 1024×768 acima.</span>
                    <ui:insert name="rodape">
                        <!--Rodapé-->
                    </ui:insert>
                </div>

            </div>
        </h:body>
    </f:view>
</html>

E aqui a index

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                template="./../templates/index_template.xhtml"
                xmlns:c="http://java.sun.com/jsp/jstl/core">

    <ui:define name="cabecalho">
        <!-- LOGIN E CABEÇALHO -->
        <div id="barraLogin" style="overflow: hidden">
            <h:form id="formLoginDentro" style="text-align: right; padding-right: 10px; font-size: 8px; vertical-align: middle;">  
                <p:growl id="messages"/>  
                <p:menuButton value="#{loginManagedBean.pessoa.nome}">  
                    <p:menuitem value="Configurações" update="messages" actionListener="#{loginManagedBean.teste2()}" icon="ui-icon-disk"/>  
                    <p:menuitem value="Mudar tema" update="messages" actionListener="#{loginManagedBean.teste2()}" icon="ui-icon-arrowrefresh-1-w"/>  
                    <p:separator />  
                    <p:menuitem value="Sair" actionListener="#{loginManagedBean.logout}" icon="ui-icon-extlink"/>  
                </p:menuButton>
            </h:form>
        </div>
    </ui:define>

    <ui:define name="corpo">
        <!-- AQUI COMEÇAM AS DEFINIÇÕES DO MÓDULOS -->
        <p:tabView style="margin-bottom: 20 px; background: white;" dynamic="true">
            <p:tab title="Início">
                <!-- Módulo início -->
                
                <ui:insert name="mod_inicio">
                    
                    <!-- AQUI EU INSIRO MEU MÓDULO INÍCIO -->

                </ui:insert>

            </p:tab title="Cadastros">

                <ui:insert name="mod_cadastro">

                    <!-- AQUI EU INSIRO MEU MÓDULO CADASTRO -->

                </ui:insert>

            </p:tab>
        </p:tabView>
    </ui:define>
</ui:composition>

Módulo inicio.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      template="./../pages/sistema.xhtml"
      xmlns:p="http://primefaces.org/ui">

    <ui:define name="mod_inicio">
        <p:layout style="min-width: 400px; min-height: 400px; bottom: 0;">  
                     ESQUERDA 
                    <p:layoutUnit position="west" size="170" header="Lista de contatos" resizable="true" closable="false" collapsible="false">
                        Módulo de bate-papo.
                    </p:layoutUnit>  
                     DIREITA 
                    <p:layoutUnit position="east" size="238" header="Widgets" resizable="true" closable="false" collapsible="true" effect="drop">  
                        <h:outputText value="Calendário rápido" />
                        <p:calendar mode="inline" id="ptCal"/>
                        <h:outputText value="etc.." />
                    </p:layoutUnit>  
                     CENTRO 
                    <p:layoutUnit position="center" header="Mensagens">  
                            Aqui entrará o módulo de mensagens.
                    </p:layoutUnit>  

                </p:layout>
    </ui:define>

</ui:composition>

No caso era pra ele mostar o conteúdo de início na aba início certo? Mas não tá funcionando…
Como poderei fazer isso? Obrigado a todos! :slight_smile:

Alguém podia me ajudar? Sei que é bobagem mas tô consumindo muito tempo com isso. Obrigado.

É… mais uma vez eu por mim mesmo tive que me virar… Também depois de tanto desespero…

Mas não sou igual a alguns que só querem tudo pronto. Tá aí…

Para resolver a questão é bem simples, basta fazer a estrutura de acordo com a seguinte formatação:

Na index.xhtml:

<!-- Insert para declarar que vai inserir um módulo (como se fosse um componente no flex) -->
<ui:insert name="cadastro_usuario">
       <!-- Include para chamar a página que contém o conteúdo a ser inserido -->
       <ui:include src="./usuario/cadastro_usuario.xhtml"/>
</ui:insert>

Cadastro usuários:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <body>
        <p:panel>
            <h:outputText value="Cadastro USUÁRIOS." />
        </p:panel>
    </body>
</html>

Assim você é capaz de criar vários subníveis chamando uma página dentro da outra permitindo a criação de páginas ou módulos por composição. Valeu aí quem ler esse post!