Mudança de página dinâmica

9 respostas
Schoker

Bom dia pessoa,

Eu tenho uma aplicação com um rich:panelMenu.
Ao lado deste menu eu tenho um panelGroup. Esse panelGroup é responsavel por carregar o conteúdo do site.

Então se eu clicar em algum link do panelMenu ele terá que mudar o conteudo do panelGroup.

Alguém sabe como posso fazer isso?

Desde já agradeço!

9 Respostas

Polverini

Requisição AJAX, acho que faz isso

Schoker

mas como eu faço isso?

ja tentei de varias formas e nao deu certo :S

Polverini

eu uso o jsf 2 + primefaces, criaria mais ou menos assim, no click do panelMenu usaria uma opção para atualização do panelGroup e dentro dele haveriam os outros componente com rendered, ou seja , usaria o ajax para atualizar o painel e rendenizar somente as partes solicitadas com um beans controller, acho que me enrrolei um pouco mais é basicamente isso, já posto um exemplo.

Edit:

<p:menubar autoSubmenuDisplay="true" effectDuration="0">
            <p:submenu label="Compras" icon="ui-icon ui-icon-cart">
                <p:menuitem value="Solicitação de Compra" icon="ui-icon ui-icon-wrench" update="painel" action="#{beanController.setView}"/>  
                <p:menuitem value="Autrização de Compra" icon="ui-icon ui-icon-wrench" update="painel" action="#{beanController.setView}"/>  
            </p:submenu>
        </p:menubar>
        <h:panelGroup id="painel">
            <h:inputText rendered="#{beanController.view}"/>
            <h:inputText rendered="#{!beanController.view}"/>
        </h:panelGroup>

P/s Usei o prime nesse exemplo, se não me engano no rich vc usaria reRender ao invés do update

Schoker

como seria essa bean?

Polverini

Seria uma classe com uma variavel booleana

Ex.

private boolan view;

public boolean isView(){
       return this.view
}

public void setView(boolean view) {
        this.view = view;
}

mais ou menos assim, porem assim vc vai usar a tag.

Posta a sua página que te do uma mão

&lt;f:setPropertyActionListener value="#{true}" target="#{nomedaclassecontroladora.view}"/&gt;

em um componente para efetuar a alteração de true e false

Schoker

entao…
eu tenho 5 paginas pra carregar em uma div…

e eu tenho 5 menus para mudar essa div com cada pagina…

como seria a bean e o codigo do menu para isso?

ex: se eu clicar no menu1, a div será carregada com a pagina1, se clicar no menu2 a div sera carregada com a pagina2…e assim por diante…

Polverini

Não testei mas a principio seria + - isso :

Bean View

public class ControllerView(){
        private int pg = 0; //Variavel que indica a página

        public int getPg() {
            return pg;
        }

        public void setPg(int pg) {
            this.pg = pg;
        }        
}

Xhtml + primefaces 2.2.1

&lt;p:menubar&gt;
    &lt;p:menuitem value="Pagina 1" url="#" update="divs"&gt;
        &lt;f:setPropertyActionListener target="#{controllerView.pg}" value="#{1}"/&gt;
    &lt;/p:menuitem&gt;
    &lt;p:menuitem value="Pagina 1" url="#" update="divs"&gt;
        &lt;f:setPropertyActionListener target="#{controllerView.pg}" value="#{2}"/&gt;
    &lt;/p:menuitem&gt;
    &lt;p:menuitem value="Pagina 1" url="#" update="divs"&gt;
        &lt;f:setPropertyActionListener target="#{controllerView.pg}" value="#{3}"/&gt;
    &lt;/p:menuitem&gt;
    &lt;p:menuitem value="Pagina 1" url="#" update="divs"&gt;
        &lt;f:setPropertyActionListener target="#{controllerView.pg}" value="#{4}"/&gt;
    &lt;/p:menuitem&gt;
    &lt;p:menuitem value="Pagina 1" url="#" update="divs"&gt;
        &lt;f:setPropertyActionListener target="#{controllerView.pg}" value="#{5}"/&gt;
    &lt;/p:menuitem&gt;
&lt;/p:menubar&gt;

&lt;h:form id="divs" prependId="false"&gt;
    &lt;p:outputPanel rendered="#{controllerView.pg==1}"/&gt;
    &lt;p:outputPanel rendered="#{controllerView.pg==2}"/&gt;
    &lt;p:outputPanel rendered="#{controllerView.pg==3}"/&gt;
    &lt;p:outputPanel rendered="#{controllerView.pg==4}"/&gt;
    &lt;p:outputPanel rendered="#{controllerView.pg==5}"/&gt;
&lt;/h:form&gt;

acho que deve funcionar =)

Schoker

Meu codigo:

<h:panelGroup id="menu_lateral">
                <h:form>
                    <p:menu styleClass="menu">
                        <p:submenu label="Cadastro">
                            //AQUI SAO OS MENUS QUE EU QERO QUE TROQUEM AS PAGINAS
                            <p:menuitem value="Suporte" update="sub_conteudo" icon="ui-icon ui-icon-wrench" />
                            <p:menuitem value="Administradora" icon="ui-icon ui-icon-suitcase" />
                            <p:menuitem value="Condomínio" icon="ui-icon ui-icon-home" />
                            <p:menuitem value="Morador" icon="ui-icon ui-icon-person" />
                        </p:submenu>
                        <p:submenu label="Gerenciamento">
                            <p:menuitem value="Suporte" update="sub_conteudo" icon="ui-icon ui-icon-wrench" />
                            <p:menuitem value="Administradora" icon="ui-icon ui-icon-suitcase" />
                            <p:menuitem value="Condomínio" icon="ui-icon ui-icon-home" />
                            <p:menuitem value="Morador" icon="ui-icon ui-icon-person" />
                        </p:submenu>
                    </p:menu>
                    <br/>
                    <p:menu styleClass="menu">
                        <p:submenu label="Conta">
                            <p:menuitem value="Conta" icon="ui-icon ui-icon-gear" />
                            <p:menuitem value="Personalizar" icon="ui-icon ui-icon-pencil" />
                        </p:submenu>
                    </p:menu>
                </h:form>
            </h:panelGroup>

            <h:panelGroup id="sub_conteudo">
                //AQUI DEVE SER CARREGADA A PAGINA
            </h:panelGroup>

Fica melhor pra ajudar agora com o codigo? rsrs

Schoker

Alguem sabe o que pode ser?

Criado 24 de fevereiro de 2011
Ultima resposta 28 de fev. de 2011
Respostas 9
Participantes 2