tabView primefaces de forma dinâmica

Olá pessoal, sou novo aqui no fórum, estive dando uma pesquisada sobre o assunto, mas não encontrei nada muito específico pro meu caso, então, lá vai minha dúvida:

Estou desenvolvendo uma aplicação que deverá conter um menu lateral com as opções da aplicação e no meio um painel com o conteúdo.
esse painel deverá conter abas que serão acrescentadas dinamicamente conforme a opção selecionada no menu.

por exemplo, se eu clicar no botão Cadastro de Clientes cria-se uma aba “Cadastro de Clientes” exibindo o formulário para tal

depois eu clico em Cadastro de Produtos, cria-se mais uma aba com o formulário para tal, mas sem perder a anterior

eu até consegui fazer isso com um controller que contem uma lista e um método que adiciona a aba…

o problema é que eu não to conseguindo passar o endereço da página que deverá estar na tab…

se for difícil a compreensão, posso postar os códigos

Desde já agradeço

Vc pode criar um tabView contendo todas as tabs que são necessárias.

Em cada tab vc pode usar o atributo “rendered” para controlar a exibição.

Cada botão será o responsável por controlar o estado do tab.

:confused:
Se for muitas tab pode gerar uma página muito grande,
sendo ruim para manutenção,legibilidade, compreensão…

bem, a idéia e bacana…

mas me ocorreu o seguinte…

será que não existe uma forma de eu criar um TabView e deixar no controlador um método que vai adicionando as tabs,
ao invés de setar o rendered?

gente, ainda não consegui resolver o problema.
criei um projeto com uma paginazinha simples para poder explicar melhor minha dúvida

página index.xhtml

<h:body> <h:form id="form" > <table> <tr> <td> <p:panel style="width: 200px; height: 800px" > <p:commandButton value="Add" action="#{testeBean.addTab()}" update="tabView" /> <p:commandButton value="Clear" action="#{testeBean.clear()}" update="tabView" /> </p:panel> </td> <td> <p:panel style="width: 800px; height: 800px" > <p:tabView value="#{testeBean.lista}" id="tabView" var="formulario" > <p:tab id="formTab" title="#{formulario.nome}" closable="true" > <h:outputText value="Conteudo = #{formulario.conteudo}" /> <ui:include src="formulario.xhtml" /> </p:tab> </p:tabView> </p:panel> </td> </tr> </table> </h:form> </h:body>

controlador TesteBean.java

@ManagedBean
@SessionScoped
public class TesteBean {

    private List<Teste> lista;

    private List<Teste> testes;
    
    private Teste novo = new Teste();
    
   //..construtor e métodos setters and getters..\\
    
    public void addTab() {
        Teste t = new Teste();
        
        t.setNome("nome");

        lista.add(novo);
    }
    
    public void clear() {
        lista.clear();        
    }
}

página formulario.xhtml

<h:form>
        <table>
            <tr>
                <td>
                    Nome:<h:inputText value="#{testeBean.teste.nome}"/>
                </td>
                <td>
                    Conteúdo:<h:inputText value="#{testeBean.teste.conteudo}" />
                </td>
                <tr>
                    <td colspan="2">
                        <h:commandButton action="#{testeBean.addConteudo()}" value="Add" />
                    </td>
                </tr>
            </tr>
        </table>
    </h:form>

acontece o seguinte :

se eu colocar no index.xhtml no trecho:

<ui:include src=“formulario.xhtml” />

ele funciona…

mas se eu colocar assim, que é o que eu preciso para que se torne dinâmico

<ui:include src="#{formulario.conteudo}" />

não mostra

embora o <h:outputText /> que existe na linha de cima com o mesmo “value” mostre exatamente “formulario.xhtml”

e aí…

o que eu faço, pelo amor de Deus!!