[NÃO RESOLVIDO] - Como abrir "conteúdo" em uma div pelo commandButton do primefaces?

7 respostas
felipehts

Boa tarde !

Tenho 4 divs: principal - menu - conteudo - rodape, Como abrir conteudo em uma div que está na pagina principal pelo commandButton do primefaces, exemplo:
OBS: cada “conteudo” está em uma pagina “conteudo”.xhtml especifica, tipo: conteudo1.xhtml, conteudo2.xhtml, etc.

<div id="principal">

<div id="menu">
//Aqui vem o menu com os links de cada conteúdo, Ex: Conteúdo 1 - Conteúdo 2 , etc
</div>

<div id="conteudo">
//Aqui vem os conteúdos 
</div>

<div id="rodape">
//Aqui vem o rodapé 
</div>
</div> // fim da div principal

7 Respostas

felipehts

Alguém?

vinnysoft

Olá felipehts.

Seria algo do tipo:

index.xhtml

<h:form id="meuForm">

<div id="conteudo">  

 <ui:include src="conteudo1.xhtml" rendered="#{bean.mostrarConteudo1}"/>
 <ui:include src="conteudo2.xhtml" rendered="#{bean.mostrarConteudo2}"/>

//etc...

</div> 

<p:commandButton value="Alternar Conteudo" actionListener="#{bean.mudarConteudo}" update="meuForm"/>

</h:form>

ManagedBean

private boolean mostrarConteudo1;
private boolean mostrarConteudo2;
private boolean mostrarConteudo3;
private int contador = 0;

//etc

public void mudarConteudo()
{
    conteudo ++;
            
            if (conteudo == 0)
            {
                mostrarConteudo1 = true;
                mostrarConteudo2 = false;
                mostrarConteudo3 = false;
            }
            else if (conteudo == 1)
            {
                mostrarConteudo1 = false;
                mostrarConteudo2 = true;
                mostrarConteudo3 = false;
            }
            else if (conteudo == 3)
            {
                mostrarConteudo1 = false;
                mostrarConteudo2 = false;
                mostrarConteudo3 = true;
            }
            //etc


}

Neste caso, vc teria um bean com as variaveis booleanas mostrarConteudo1, mostrarConteudo2, etc. que vc setaria para true quando quissese renderizar o conteudo, ao apertar o botão.

Não sei se eh a melhor forma de resolver. Acho que existe um design pattern para tratar melhor essa mudança de conteudo (State ou Strategy), se quiser melhorar o código.

Espero ter ajudado!

Até +!

felipehts

Obrigado pela dica, pelo que verifiquei é isso mesmo, vou testar aqui e posto o resultado…vlwww

felipehts

Testei o código acima, porém o “rendered” não funciona, mesmo colocando como “rendered=“false”” ele continua exibindo o conteúdo… alguma outra sugestão ???

felipehts

UP !

diogozero

Utilize templates do Facelets


felipehts

diogozero:
Utilize templates do Facelets

http://blog.globalcode.com.br/2009/08/facelets-uma-forma-mais-agil-para.html

vlw vou conferir aqui depois…

Criado 25 de julho de 2012
Ultima resposta 2 de ago. de 2012
Respostas 7
Participantes 3