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.

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!!