[resolvido] atualizar a4j:include não funciona, a pagina adicionada não é atualizada

38 respostas
M

Bom dia galera,

Antes de tudo agradeço aos interessados em me ajudar.

Bom, vamos ao meu problema, estou usando rich faces pela primeira vez, com a intenção de ter um menu lateral onde clicando nos itens deste menu abriria a pagina em questão no painel ao lado.

Tenho para isso um rich:panelMenu com alguns rich:panelMenuGroup e dentro destes os rich:panelMenuItem, clicando nestes chama o managed bean que atualiza uma string com o endereço da página a ser carregada, um a4j:include dentro de um a4j:outputPanel carrega a página usando o endereço pego deste managed bean, e o id deste é informado no rerender do menuItem. Quando eu clico no menu item chama mesmo o método no managed bean, ai então muda o endereço da página e da um stackOverFlowError com um stack trace enorme (colado no fim da mensagem).

Ja googlei e achei algumas pessoas que tiveram o mesmo erro, a maioria não disse como resolveu (se resolveu), o que alguns sugeriram não funcionou aqui, tentei o rich:panel no lugar do a4j:outputPanel, tentei usar o id dele no rerender…enfim, não consegui resolver meu problema, criei uma navegation-rule no faces-config.xml pra ir desta página com para a outra que quero carregar no painel mais ai carrega fora, no lugar da pagina atual (o que não é o que estou querendo), tentei com e sem o imediate no menuItem… Enfim, se alguém puder me ajudar, me mostrar onde to errando e sugerir uma solução serei bem grato.

Interessante é que o managed bean onde fica o endereço da página carregada pelo painel é de escopo de sessão, então depois que da o stack over flow, se eu fecha a aba, chamar a mesma pagina default.jsp, ele exibe a outra página no painel, a que foi setada no managed bean ao clicar no menuItem… mas quando eu clico da o stack over flow e não muda nada na aba que estamos usando…

Bem, o código é o seguinte (notem que tentei com action e actionListener, acredito que o correto seria usar o action, mas nenhum dos dois funciona…).

página principal onde ficam estes itens:

<a4j:form id="form">
    <h:panelGrid columns="2" columnClasses="cols,cols" width="400">
	
	<rich:panelMenu style="width:200px"  mode="ajax" 
        iconExpandedGroup="disc" iconCollapsedGroup="disc" 
        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" 
        iconCollapsedTopGroup="chevronDown">
        
        <rich:panelMenuGroup label="Cadastro">
            <rich:panelMenuItem label="Empresa" actionListener="#{panelMenu.cadastros}" reRender="painelModulo" ajaxSingle="true" immediate="true" />
            <rich:panelMenuItem label="Entidade" action="#{panelMenu.cadastros}" reRender="painelModulo" ajaxSingle="true" immediate="true" />
        </rich:panelMenuGroup>

        </rich:panelMenu>
	
    <a4j:outputPanel ajaxRendered="true" layout="block">
        <a4j:include ajaxRendered="true" id="painelModulo" viewId="#{panelMenu.page}"></a4j:include>
    </a4j:outputPanel>
    
    
    
    
	</h:panelGrid>
    </a4j:form>

o managed bean é o seguinte:

package br.com.triad.jsf.managedbeans;

import javax.faces.event.ActionEvent;

public class Menu {
	
	private String page = "/pages/vazia.jsp";
	
	
	public String cadastros(ActionEvent e){
		System.out.println("cadastro chamado");
		this.page = "/pages/cadastro.jsp";
		return "cadastro";
	}

	public String cadastros(){
		System.out.println("cadastro chamado 2");
		this.page = "/pages/cadastro.jsp";
		return "cadastro";
	}

	public String getPage() {
		return page;
	}

	public void setPage(String page) {
		this.page = page;
	}
	
	
	
}

as primeiras várias linhas do stack trace:

Exception in thread ""http-bio-8080"-exec-7" java.lang.StackOverflowError
	at java.lang.Class.getField0(Class.java:2618)
	at java.lang.Class.getField(Class.java:1518)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.isSpecialElement(AjaxChildrenRenderer.java:200)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:153)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:124)
	at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:685)
	at org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:556)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
	at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)

38 Respostas

M

apenas acrescentando, tousando eclipse helios e tomcat 7…

M

informações adicionais…

nas paginas a serem adicionadas eu mudei de <f:view> para <f:subview> e parou de dar o stack over flow mais ainda não carrega a pagina em questão sozinho via ajax como desejado.

ai chamando a pagina denovo a pagina adicionada é a nova ao invés da antiga (a que deveria carregar sem ter que dar um refresh na pagina)…

bom eu vo continuar meus testes… se alguém souber como carregar a outra página nesse caso por favor me respondam…estou mesmo precisando disso…

R

Tenta o seguinte: Coloca um id no teu a4j:outputPanel e ao invez de vc renderizar o include, vc renderiza o outputPanel todo entendeu?

M

eu ja tentei isso… tanto com o a4j:outputPanel quanto com o rich:panel… não adiantou… não atualiza a tela incluida (só atualiza se eu der um refresh no próprio browser)…

agradeço a dica de qualquer forma.

A

Cara, o metodo está retornando um outcome, correto ? Você tem esse outcome mapeado no faces ?

O que você quer é utilizar a navegação do faces ou utilizar o include ajax renderizando só o seu conteudo “principal” do meio ???

será que ele não está se perdendo nesse cenário ???

Tente retornar uma string vazia nos métodos, e tenta colocar ajaxRendered=“false” (Padrão) do a4j:outputPanel e forçar o reRender no id do a4j:outputPanel … e tira o ajaxRendered=“true” do include também…

[]'s

R

Só pra testar, muda o a4j:form para h:form, pra ver

M

alex.brito:

bom… vamos por partes, eu tenho o lado esquerdo da página com o menu e o lado direito com o painel onde eu quero carregar a outra página.

eu nem deixei o navigation-rule referente a isso por que quando eu tinha testado antes usando um navigation-rule, ao clicar no menuItem ele foi pra outra página ao invés de carregar essa outra página no painel como desejado.

Eu acho que intendi o que você disse, deixar o navigation-rule, porém com uma string de navegação errada para ele recarregar a página, assim ao recarregar vai estar com a página atualizada (vou testar).

rjbcordeiro

eu tinha feito isso antes quando nas subpaginas estavam o f:view ao invés do subview, agora que está com o subview eu vou refazer o teste…

ja volto aqui para postar os resultados, obrigado a ambos desde ja.

M

então, eu fiz esse teste e nada mudou.

alex.brito:
Cara, o metodo está retornando um outcome, correto ? Você tem esse outcome mapeado no faces ?

O que você quer é utilizar a navegação do faces ou utilizar o include ajax renderizando só o seu conteudo “principal” do meio ???

será que ele não está se perdendo nesse cenário ???

Tente retornar uma string vazia nos métodos, e tenta colocar ajaxRendered=“false” (Padrão) do a4j:outputPanel e forçar o reRender no id do a4j:outputPanel … e tira o ajaxRendered=“true” do include também…

[]'s

Então, fiz este teste, nem mechi no ajaxRendered das taglib, só no faces config eu criei o navigation-rule, deixei o managed-bean retornando uma string diferente da considerada no navigation-rule e não estava nem dando o refresh nesta mesma página… ai eu deixei a string retornada no método do managed-bean e a do navigation-rule iguais e ai ele atualiza a página inteira, sendo que depois que atualiza a pagina incluida é a outra como desejado.

OK, agora está incluindo a página de forma correta, o problema é que eu queria que atualizasse só a pagina incluida no painel e não tudo… poderiam me ajudar com isso?

a, e obrigado a ambos pela ajuda.

–> editando, respondendo a pergunta do alex.brito, a minha intenção é renderiza só o conteudo principal no meio, via ajax

M

meu código no momento está assim:

pagina principal (default.jsp)

&lt;a4j:form id="form" ajaxSubmit="true" ajaxSingle="true"&gt;
    &lt;h:panelGrid columns="2" width="400"&gt;
	
	&lt;rich:panelMenu style="width:200px"  mode="ajax" 
        iconExpandedGroup="disc" iconCollapsedGroup="disc" 
        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" 
        iconCollapsedTopGroup="chevronDown"&gt;
        
        &lt;rich:panelMenuGroup label="Cadastro"&gt;
            &lt;rich:panelMenuItem label="Empresa" actionListener="#{panelMenu.cadastros}" reRender="painelModulo" ajaxSingle="true"  /&gt;
            &lt;rich:panelMenuItem label="Entidade" action="#{panelMenu.cadastros}" reRender="painelModulo" ajaxSingle="true"  /&gt;
            &lt;rich:panelMenuItem label="Empresa2" actionListener="#{panelMenu.cadastros}" reRender="painelModulo2" ajaxSingle="true"  /&gt;
            &lt;rich:panelMenuItem label="Entidade2" action="#{panelMenu.cadastros}" reRender="painelModulo2" ajaxSingle="true"  /&gt;
        &lt;/rich:panelMenuGroup&gt;
&lt;/rich:panelMenu&gt;
	
    &lt;rich:panel id="painelModulo" style=" background: transparent;border: none;" &gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/rich:panel&gt;
    
	&lt;/h:panelGrid&gt;
    &lt;/a4j:form&gt;

managed bean:

package br.com.triad.jsf.managedbeans;

import javax.faces.event.ActionEvent;

public class Menu {
	
	private String page = "/pages/vazia.jsp";
	
	
	public void cadastros(ActionEvent e){
		System.out.println("cadastro chamado");
		this.page = "/pages/cadastro.jsp";
	}

	public String cadastros(){
		System.out.println("cadastro chamado 2");
		this.page = "/pages/cadastro.jsp";
		return "cadastro";
	}

	public String getPage() {
		return page;
	}

	public void setPage(String page) {
		this.page = page;
	}
	
	
	
}

faces-config.xml:

&lt;managed-bean&gt;
  &lt;managed-bean-name&gt;panelMenu&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.triad.jsf.managedbeans.Menu&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;

 &lt;navigation-rule&gt;
  &lt;from-view-id&gt;/pages/default.jsp&lt;/from-view-id&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;cadastro&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/default.jsp&lt;/to-view-id&gt;
  &lt;/navigation-case&gt;
 &lt;/navigation-rule&gt;
A

Beleza então cara…

Vamos fazer o seguinte … separar sua pagina como um template, onde teremos.


Header - Logo, nome empresa, etc …


contentMain - pega o menu e o conteudo principal

***************|
left ***********| Content (conteudoPrincipal)
(Menu) ********|

***************

footer - copyright

Partindo dessa premissa, posso concluir que o que voce quer é clicar no menu e que a pagina seja carregada no Content (conteudoPrincipal), sem um refresh na pagina inteira

Assim sendo, voce deve esquecer a navegação do faces. Inclusive seus métodos de action, não precisam retornar nada (void).

eles precisam ter uma inteligencia para popular um atributo, que será utilizado como o caminho (viewId) do seu a4j:include) …

eu já implementei esse modelo em um projeto, e basicamente fiz o seguinte:

Criei um bean para controlar a navegação (dinamica via ajax) - NavegacaoMB

  • Dentro desse cara, tinha o atributo currentPage

Tambem tinha o bean do menu, que disparava a ação para popular o atributo currentPage do NavegacaoMB da sessão

depois disso, eu dava um reRender em uma div, como no “modelinho” acima, eu dava reRender na div Content …

Acho que você já tem tudo isso, o que você precisa é para de utilizar a navegação do faces, para ele não ficar dando refresh na tela, e sim, voce forçar isso, via reRender

acho que é isso …

PS. O modelinho aqui ficou certo na hora do “comit” ta ficando feio … :frowning:

[]'s

R

Uma vez utilizei esta forma de incluir as páginas e fiz o seguinte:

tem algumas diferenças, mas ve se te ajuda ai

no menu.xhtml:

<a4j:form>
						<a4j:commandLink action="#{acaoMenu.pagCrudUsuario}">
							<h:graphicImage value="images/icons/cad_usuarios.png" alt="Cadastrar Usuário">
								<span>Cadastrar Usuário</span>
							</h:graphicImage>
							<a4j:actionparam name="currentState" value="adicionar" />
							<a4j:actionparam name="titulo" value="Cadastrar Usuário" />
						</a4j:commandLink>
					</a4j:form></li>

a actionMenu:

public class ActionMenu {
	//#region constantes de caminhos de paginas
	private static final String PAG_CRUD_USUARIO = "/jsf/usuario/crud.jsp";


public ActionMenu() {
      this.url = PAG_INICIAL;//aqui a primeira pagina
//tem que ter os gets e sets deste cara
}

  public void pagCrudUsuario(){
		this.setUrl(PAG_CRUD_USUARIO);

  }

....

}

eu usei um template mas… ve ai

bom tinha um outro template que chamava este aqui.

template.xhtml

<ui:define name="conteudo">
		<div class="textbox inicial">
	        <div id="content">          
	        	<a4j:include id="conteudoDinamico" viewId="#{acaoMenu.url}"/>			
			</div>
	    </div>
	</ui:define>

aqui uma pagina de usuario:

<?xml version="1.0" encoding="UTF-8"?>
<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"
				xmlns:a4j="http://richfaces.org/a4j"
				xmlns:rich="http://richfaces.org/rich"
				xmlns:t="http://myfaces.apache.org/tomahawk"
				xmlns:c="http://java.sun.com/jstl/core">

.......... todo conteudo da pagina aqui sem forms
</ui:composition>

web.xml

<filter>	
	   <display-name>RichFaces Filter</display-name>	
	   <filter-name>richfaces</filter-name> 	
	   <filter-class>org.ajax4jsf.Filter</filter-class>	    		
	</filter> 	
	
	<filter-mapping>	
	   <filter-name>richfaces</filter-name>	
	   <servlet-name>Faces Servlet</servlet-name>	
	   <dispatcher>REQUEST</dispatcher>	
	   <dispatcher>FORWARD</dispatcher>	
	   <dispatcher>INCLUDE</dispatcher>	
	</filter-mapping>	 


....



<!-- DA UMA OLHADA NESTE CARINHA AQUI OK -->
<context-param>
    	<param-name>org.ajax4jsf.handleViewExpiredOnClient</param-name>
    	<param-value>true</param-value>
	</context-param>

faces-config.xml

<application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>

...

no faces-config eu não precisava fazer a navegação não, pois com ajax não precisava entende, o que vai mudar é só o centro e por isto não precisou eu colocar a navegação

Bom acho que é isto, qualquer coisa manda ai ok;

M

alex.brito

então cara… se for ver bem a parte funcional do que você disse quanto a clicar em um componente e alterar a página incluida eu estou fazendo… é quase o que você disse, só faltam partes do template (o header, o menubar e o footer) que não estão relacionadas ao que está falhando… eu tinha deixado antes sem essa parte do faces config, sendo assim tinha feito o que você disse acredito eu, o managed bean é chamado, o sysout que eu dexei nele é printado na tela, o reRender está com o id do a4j:include (tb tentei o id do painel), mas não é atualizado… isso sem o faces config… o managed bean com o endereço da pagina sendo adicionada atualmente muda, inclusive se eu do um refresh na pagina carrega a outra, que deveria ter carregado sem eu dar um refresh pelo próprio browser…

rjbcordeiro

Então… a parte do web.xml o jboss tools que fez pra mim (é a primeira vez que estou usando richfaces), eu vou conferir amanhã no trabalho, ja que não tenho os fontes aqui para ver se faltou alguma coisa… o código que vocÊ colocou no faces config é relativo ao facelets não é? eu não o estou usando, estou usando apenas o rich faces (com ajax 4 jsf) e o majorra (RI, JSF da sun), como de jsf só usei o ri, não quero usar duas coisas que ainda estou aprendendo e ainda não conheço (rich faces e facelets), eu tenho, obrigatoriamente que usar o facelets?

obrigado a ambos denovo.

A

Bom dia, então cara, pelo que eu entendi o “bug” está no reRender então. Depois você tenta fazer o seguinte:

<h:panelGroup id="content" layout="block">  
         <a4j:include id="painelModulo" viewId="#{panelMenu.page}"></a4j:include>  
  </h:panelGroup>

Ai no seu menu, você faz o reRender em “content”. Outra coisa, quando eu implementei isso, no meu menu (<rich:panelMenu >), não utilizei mode=“ajax” e nos rich:panelMenuItem não tinha o ajaxSingle.

vale como tentiva.

[]'s

M

pessoal, agradeço a insistência... rs

alex.brito

sim... aparentemente eu estou com algum problema com o reRender mesmo, o managed bean chamado printa o sysout que eu deixei e se depois que eu clicar no menuItem eu dar um F5, ai a página adicionada na direita é a outra (que foi setada no managed bean mais nãoatualizo na página dentro do browser em si).

Eu não teste com h:panelGroup, vou testar, vou tentar tirando o mode=ajax e o ajaxSingle também, ja retorno.

rjbcordeiro

eu adicionei esse trecho no web.xml que você deixou no seu código dizendo para dar uma olhada, não mudou... veja meu web.xml inteiro:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"&gt;
  &lt;display-name&gt;amazonia&lt;/display-name&gt;
  &lt;context-param&gt;
    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
    &lt;param-value&gt;server&lt;/param-value&gt;
  &lt;/context-param&gt;
  &lt;context-param&gt;
    &lt;param-name&gt;org.ajax4jsf.SKIN&lt;/param-name&gt;
    &lt;param-value&gt;emeraldTown&lt;/param-value&gt;
  &lt;/context-param&gt;
  
  &lt;context-param&gt;  
  	&lt;param-name&gt;org.ajax4jsf.handleViewExpiredOnClient&lt;/param-name&gt;  
    &lt;param-value&gt;true&lt;/param-value&gt;  
  &lt;/context-param&gt; 
  
  &lt;filter&gt;
    &lt;display-name&gt;Ajax4jsf Filter&lt;/display-name&gt;
    &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt;
    &lt;filter-class&gt;org.ajax4jsf.Filter&lt;/filter-class&gt;
  &lt;/filter&gt;
  &lt;filter-mapping&gt;
    &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt;
    &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
    &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
    &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
    &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
  &lt;/filter-mapping&gt;
  &lt;listener&gt;
    &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
  &lt;/listener&gt;
  &lt;servlet&gt;
    &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
  &lt;/servlet&gt;
  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
  &lt;filter&gt;
    &lt;display-name&gt;FacesFilter&lt;/display-name&gt;
    &lt;filter-name&gt;FacesFilter&lt;/filter-name&gt;
    &lt;filter-class&gt;br.com.triad.util.filter.FacesFilter&lt;/filter-class&gt;
  &lt;/filter&gt;
  
  &lt;!-- altera de .jsp para .jsf nas urls --&gt;
  &lt;filter-mapping&gt;
    &lt;filter-name&gt;FacesFilter&lt;/filter-name&gt;
    &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
    &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
  &lt;/filter-mapping&gt;
  
  &lt;welcome-file-list&gt;
  	&lt;welcome-file&gt;/pages/default.jsp&lt;/welcome-file&gt;
  &lt;/welcome-file-list&gt;
  
&lt;/web-app&gt;
M

bem...vamos por partes

usei o h:panelGroup e não mudou nada (tentei clicando tanto no menuItem que aponta para o painel quando no que aponta o reRender para o a4j:include.

depois mantive o h:panelGroup e tirei o ajaxSingle e o mode=ajax dos menuItens e refiz os mesmos testes, clicando em ambos, nada mudou, a página continua só atualizando quando eu do um F5 no browser...

então eu voltei para o rich:panelMenu, refiz os mesmos testes com e sem o ajaxSingle e o mode dos menuItems e nada ainda...

o engraçado é que seu eu clico no menuItem que aponta no reRender para o painel comentado, é printada a mensagemacusando isso:

19/05/2011 09:02:22 org.ajax4jsf.context.AjaxContextImpl convertId
AVISO: Target component for id content not found

mais se o componente existe, ele não printa que não achou o componente mais também não o atualiza... =/.

então por desencargo fiz o mesmo teste porém usando a4j:outputPanel primeiro com o ajaxRendered="true" nesse componente e depois sem, com e sem o ajaxSingle e o mode nos itens... nada ainda =/

minha página no momento está assim:

&lt;f:view&gt;
&lt;a4j:outputPanel ajaxRendered="true"&gt;
	
	&lt;a4j:form id="form" ajaxSubmit="true" ajaxSingle="true"&gt;
    &lt;h:panelGrid columns="2" width="400"&gt;
	
	&lt;rich:panelMenu style="width:200px"  mode="ajax" 
        iconExpandedGroup="disc" iconCollapsedGroup="disc" 
        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" 
        iconCollapsedTopGroup="chevronDown"&gt;
        
        &lt;rich:panelMenuGroup label="Cadastro"&gt;
            &lt;rich:panelMenuItem label="painelModulo al" actionListener="#{panelMenu.cadastros}" reRender="painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo a" action="#{panelMenu.cadastros}" reRender="painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 al" actionListener="#{panelMenu.cadastros}" reRender="painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 a" action="#{panelMenu.cadastros}" reRender="painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="content al" actionListener="#{panelMenu.cadastros}" reRender="content" /&gt;
            &lt;rich:panelMenuItem label="content a" action="#{panelMenu.cadastros}" reRender="content" /&gt;
            &lt;%-- ainda tem outros menuItens e menugroups depois que estou emitindo --%&gt;

        &lt;/rich:panelMenuGroup&gt;
    
    &lt;/rich:panelMenu&gt;

	&lt;%-- 
	&lt;h:panelGroup id=&quot;content&quot; layout=&quot;block&quot;&gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/h:panelGroup&gt;
	 --%&gt;
	 
	&lt;%-- --%&gt;
	&lt;a4j:outputPanel ajaxRendered="true" layout="block" id="painelModulo" &gt;  
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/a4j:outputPanel&gt;
	&lt;%--  --%&gt;
	
    &lt;%-- 
    &lt;rich:panel id=&quot;painelModulo&quot;  style=&quot; background: transparent;border: none;&quot;  &gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/rich:panel&gt;
	 --%&gt;
    
	&lt;/h:panelGrid&gt;
    &lt;/a4j:form&gt;

&lt;/a4j:outputPanel&gt;
&lt;/f:view&gt;
R

Olha, mostra seu faces-config.xml.

Mostra tb a pagina html que é gerada, mostra toda, para ver se o javascript esta na pagina.

M

faces-config.xml

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"&gt;
 &lt;managed-bean&gt;
  &lt;managed-bean-name&gt;login&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.triad.jsf.managedbeans.Login&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;
 &lt;managed-bean&gt;
  &lt;managed-bean-name&gt;panelMenu&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.triad.jsf.managedbeans.Menu&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;
 
 
 &lt;navigation-rule&gt;
  &lt;from-view-id&gt;/*&lt;/from-view-id&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;login&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/login.jsp&lt;/to-view-id&gt;
  &lt;/navigation-case&gt;
 &lt;/navigation-rule&gt;
 
 &lt;navigation-rule&gt;
  &lt;from-view-id&gt;/pages/login.jsp&lt;/from-view-id&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;OK&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/default.jsp&lt;/to-view-id&gt;
   &lt;redirect/&gt;
  &lt;/navigation-case&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;NOK&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/login.jsp&lt;/to-view-id&gt;
  &lt;/navigation-case&gt;
 &lt;/navigation-rule&gt;
 
 &lt;lifecycle&gt;
  &lt;phase-listener&gt;br.com.triad.util.filter.LoginPhaseListener&lt;/phase-listener&gt;
 &lt;/lifecycle&gt;
&lt;/faces-config&gt;

página default.jsp:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%&gt;
    
&lt;%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
&lt;%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;

&lt;%@taglib uri="http://richfaces.org/rich" prefix="rich" %&gt;
&lt;%@taglib uri="http://richfaces.org/a4j" prefix="a4j" %&gt;

&lt;%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor="#DCDCDC"&gt;
&lt;f:view&gt;
	
	&lt;a4j:form id="form" ajaxSubmit="true" ajaxSingle="true"&gt;
    &lt;h:panelGrid columns="2" width="400"&gt;
	
	&lt;rich:panelMenu style="width:200px"  mode="ajax" 
        iconExpandedGroup="disc" iconCollapsedGroup="disc" 
        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" 
        iconCollapsedTopGroup="chevronDown"&gt;
        
        &lt;rich:panelMenuGroup label="Cadastro"&gt;
            &lt;rich:panelMenuItem label="painelModulo al" actionListener="#{panelMenu.cadastros}" reRender="painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo a" action="#{panelMenu.cadastros}" reRender="painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 al" actionListener="#{panelMenu.cadastros}" reRender="painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 a" action="#{panelMenu.cadastros}" reRender="painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="content al" actionListener="#{panelMenu.cadastros}" reRender="content" /&gt;
            &lt;rich:panelMenuItem label="content a" action="#{panelMenu.cadastros}" reRender="content" /&gt;
            
        &lt;/rich:panelMenuGroup&gt;
        
    &lt;/rich:panelMenu&gt;
	
	&lt;%-- 
	&lt;h:panelGroup id=&quot;content&quot; layout=&quot;block&quot;&gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/h:panelGroup&gt;
	 --%&gt;
	 
	&lt;%-- --%&gt;
	&lt;a4j:outputPanel ajaxRendered="true" layout="block" id="painelModulo" &gt;  
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/a4j:outputPanel&gt;
	&lt;%--  --%&gt;
	
    &lt;%-- 
    &lt;rich:panel id=&quot;painelModulo&quot;  style=&quot; background: transparent;border: none;&quot;  &gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/rich:panel&gt;
	 --%&gt;
    
	&lt;/h:panelGrid&gt;
    &lt;/a4j:form&gt;

&lt;/f:view&gt;	
&lt;/body&gt;
&lt;/html&gt;

página html gerada:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;

    








&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;link class="component" href="/amazonia/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/basic_classes.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__.jsf" rel="stylesheet" 
type="text/css" /&gt;&lt;link class="component" href="/amazonia/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/extended_classes.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__.jsf" 
media="rich-extended-skinning" rel="stylesheet" type="text/css" /&gt;&lt;script src="/amazonia/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.AjaxScript.jsf" 
type="text/javascript"&gt;&lt;/script&gt;&lt;script src="/amazonia/a4j/g/3_3_3.Finalorg/ajax4jsf/javascript/scripts/form.js.jsf" type="text/javascript"&gt;&lt;/script&gt;&lt;script 
src="/amazonia/a4j/g/3_3_3.Finalorg.ajax4jsf.javascript.PrototypeScript.jsf" type="text/javascript"&gt;&lt;/script&gt;&lt;script 
src="/amazonia/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/utils.js.jsf" type="text/javascript"&gt;&lt;/script&gt;&lt;script 
src="/amazonia/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/form.js.jsf" type="text/javascript"&gt;&lt;/script&gt;&lt;script 
src="/amazonia/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/panelMenu.js.jsf" type="text/javascript"&gt;&lt;/script&gt;&lt;link class="component" 
href="/amazonia/a4j/s/3_3_3.Finalorg/richfaces/renderkit/html/css/panelMenu.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__.jsf" rel="stylesheet" type="text/css" /&gt;&lt;script 
type="text/javascript"&gt;window.RICH_FACES_EXTENDED_SKINNING_ON=true;&lt;/script&gt;&lt;script 
src="/amazonia/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/skinning.js.jsf" type="text/javascript"&gt;&lt;/script&gt;&lt;/head&gt;
&lt;body bgcolor="#DCDCDC"&gt;
&lt;form id="form" name="form" method="post" action="javascript:A4J.AJAX.SubmitForm('form',{'similarityGroupingId':'form','parameters':{'form':'form','ajaxSingle':'form'} 
,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} )"&gt;&lt;table width="400"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="rich-pmenu " id="form:j_id_jsp_1202636422_3" style="width:100%; width:200px;"&gt;&lt;div class="rich-pmenu-top-group-div" 
id="form:j_id_jsp_1202636422_4"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" class="rich-pmenu-top-group  rich-pmenu-group   " 
id="tablehideform:j_id_jsp_1202636422_4" style="; "&gt;&lt;tbody&gt;&lt;tr id="row_form:j_id_jsp_1202636422_4"&gt;&lt;td class="rich-pmenu-nowrap rich-pmenu-group-self-icon 
"&gt;<img      />&lt;/td&gt;&lt;td class="rich-pmenu-group-self-label rich-pmenu-group-self-label rich-pmenu-top-group-self-label" id="iconform:j_id_jsp_1202636422_4" 
style="width:100%"&gt;&lt;input autocomplete="off" name="panelMenuStateform:j_id_jsp_1202636422_4" type="hidden" /&gt;&lt;input autocomplete="off" 
name="panelMenuActionform:j_id_jsp_1202636422_4" type="hidden" /&gt;Cadastro&lt;/td&gt;&lt;td class="rich-pmenu-group-self-icon rich-pmenu-top-group-self-icon"&gt;<img      />&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div id="form:j_id_jsp_1202636422_5" style="display: none;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" class="rich-
pmenu-item  " id="tablehideform:j_id_jsp_1202636422_5"&gt;&lt;tbody&gt;&lt;tr id="row_form:j_id_jsp_1202636422_5"&gt;&lt;td class="rich-pmenu-nowrap rich-pmenu-item-icon 
"&gt;<img     /><img      />&lt;/td&gt;&lt;td class="rich-pmenu-group-self-label rich-pmenu-item-label" id="iconform:j_id_jsp_1202636422_5" style="width:100%"&gt;&lt;input 
autocomplete="off" name="panelMenuActionform:j_id_jsp_1202636422_5" type="hidden" /&gt;painelModulo al&lt;/td&gt;&lt;td&gt;<img      
/>&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id="form:j_id_jsp_1202636422_6" style="display: none;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" 
class="rich-pmenu-item  " id="tablehideform:j_id_jsp_1202636422_6"&gt;&lt;tbody&gt;&lt;tr id="row_form:j_id_jsp_1202636422_6"&gt;&lt;td class="rich-pmenu-nowrap rich-pmenu-
item-icon "&gt;<img     /><img      />&lt;/td&gt;&lt;td class="rich-pmenu-group-self-label rich-pmenu-item-label" id="iconform:j_id_jsp_1202636422_6" 
style="width:100%"&gt;&lt;input autocomplete="off" name="panelMenuActionform:j_id_jsp_1202636422_6" type="hidden" /&gt;painelModulo a&lt;/td&gt;&lt;td&gt;<img      
/>&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id="form:j_id_jsp_1202636422_7" style="display: none;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" 
class="rich-pmenu-item  " id="tablehideform:j_id_jsp_1202636422_7"&gt;&lt;tbody&gt;&lt;tr id="row_form:j_id_jsp_1202636422_7"&gt;&lt;td class="rich-pmenu-nowrap rich-pmenu-
item-icon "&gt;<img     /><img      />&lt;/td&gt;&lt;td class="rich-pmenu-group-self-label rich-pmenu-item-label" id="iconform:j_id_jsp_1202636422_7" 
style="width:100%"&gt;&lt;input autocomplete="off" name="panelMenuActionform:j_id_jsp_1202636422_7" type="hidden" /&gt;painelModulo2 al&lt;/td&gt;&lt;td&gt;<img      
/>&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id="form:j_id_jsp_1202636422_8" style="display: none;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"
 class="rich-pmenu-item  " id="tablehideform:j_id_jsp_1202636422_8"&gt;&lt;tbody&gt;&lt;tr id="row_form:j_id_jsp_1202636422_8"&gt;&lt;td class="rich-pmenu-nowrap rich-pmenu-
item-icon "&gt;<img     /><img      />&lt;/td&gt;&lt;td class="rich-pmenu-group-self-label rich-pmenu-item-label" id="iconform:j_id_jsp_1202636422_8" 
style="width:100%"&gt;&lt;input autocomplete="off" name="panelMenuActionform:j_id_jsp_1202636422_8" type="hidden" /&gt;painelModulo2 a&lt;/td&gt;&lt;td&gt;<img      
/>&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id="form:j_id_jsp_1202636422_9" style="display: none;"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"
 class="rich-pmenu-item  " id="tablehideform:j_id_jsp_1202636422_9"&gt;&lt;tbody&gt;&lt;tr id="row_form:j_id_jsp_1202636422_9"&gt;&lt;td class="rich-pmenu-nowrap rich-pmenu-
item-icon "&gt;<img     /><img      />&lt;/td&gt;&lt;td class="rich-pmenu-group-self-label rich-pmenu-item-label" id="iconform:j_id_jsp_1202636422_9" 
style="width:100%"&gt;&lt;input autocomplete="off" name="panelMenuActionform:j_id_jsp_1202636422_9" type="hidden" /&gt;content al&lt;/td&gt;&lt;td&gt;<img      
/>&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id="form:j_id_jsp_1202636422_10" style="display: none;"&gt;&lt;table border="0" cellpadding="0" 
cellspacing="0" class="rich-pmenu-item  " id="tablehideform:j_id_jsp_1202636422_10"&gt;&lt;tbody&gt;&lt;tr id="row_form:j_id_jsp_1202636422_10"&gt;&lt;td class="rich-pmenu-
nowrap rich-pmenu-item-icon "&gt;<img     /><img      />&lt;/td&gt;&lt;td class="rich-pmenu-group-self-label rich-pmenu-item-label" id="iconform:j_id_jsp_1202636422_10" 
style="width:100%"&gt;&lt;input autocomplete="off" name="panelMenuActionform:j_id_jsp_1202636422_10" type="hidden" /&gt;content a&lt;/td&gt;&lt;td&gt;<img      
/>&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;input autocomplete="off" id="form:j_id_jsp_1202636422_3selectedItemName" 
name="form:j_id_jsp_1202636422_3selectedItemName" type="hidden" /&gt;&lt;div style="display:none"&gt;&lt;script id="scriptform:j_id_jsp_1202636422_3" 
type="text/javascript"&gt;var ids = new PanelMenu('form:j_id_jsp_1202636422_3',false).getIds();
var params = new Object();new PanelMenuItem(ids, params,{myId:'form:j_id_jsp_1202636422_4',parentId:'form:j_id_jsp_1202636422_3'},
{type:"node",onopen:";",onclose:";",event:"click",mode:"none",target:"",disabled:false,target:"",name:"j_id_jsp_1202636422_4"},{},new Array("rich-pmenu-hovered-
element"),0,true,false,false,"A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form:j_id_jsp_1202636422_4','parameters':
{'form:j_id_jsp_1202636422_4':'form:j_id_jsp_1202636422_4'} ,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} 
)","","right","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconChevronUp/DATB/eAH7!!8!AAX9Av4_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.re
nderkit.html.iconimages.PanelMenuIconChevronDown/DATB/eAH7!!8!AAX9Av4_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer/DATB/
eAH7!!8!AAX9Av4_.jsf");
var params = new Object();new PanelMenuItem(ids, params,{myId:'form:j_id_jsp_1202636422_5',parentId:'form:j_id_jsp_1202636422_4'},
{type:"item",onopen:"",onclose:"",event:"click",mode:"ajax",target:"",disabled:false,target:"",name:"j_id_jsp_1202636422_5"},{},new Array("rich-pmenu-hovered-
element"),1,false,false,false,"A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form:j_id_jsp_1202636422_5','parameters':
{'form:j_id_jsp_1202636422_5':'form:j_id_jsp_1202636422_5'} ,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} 
)","","left","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderki
t.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf" ,"" 
,"/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer/DATB/eAFjCGAAAACjAFE_.jsf");
var params = new Object();new PanelMenuItem(ids, params,{myId:'form:j_id_jsp_1202636422_6',parentId:'form:j_id_jsp_1202636422_4'},
{type:"item",onopen:"",onclose:"",event:"click",mode:"ajax",target:"",disabled:false,target:"",name:"j_id_jsp_1202636422_6"},{},new Array("rich-pmenu-hovered-
element"),1,false,true,false,"A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form:j_id_jsp_1202636422_6','parameters':
{'form:j_id_jsp_1202636422_6':'form:j_id_jsp_1202636422_6'} ,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} 
)","","left","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit
.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf" ,"" 
,"/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer/DATB/eAFjCGAAAACjAFE_.jsf");
var params = new Object();new PanelMenuItem(ids, params,{myId:'form:j_id_jsp_1202636422_7',parentId:'form:j_id_jsp_1202636422_4'},
{type:"item",onopen:"",onclose:"",event:"click",mode:"ajax",target:"",disabled:false,target:"",name:"j_id_jsp_1202636422_7"},{},new Array("rich-pmenu-hovered-
element"),1,false,false,false,"A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form:j_id_jsp_1202636422_7','parameters':
{'form:j_id_jsp_1202636422_7':'form:j_id_jsp_1202636422_7'} ,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} 
)","","left","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit
.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf" ,"" 
,"/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer/DATB/eAFjCGAAAACjAFE_.jsf");
var params = new Object();new PanelMenuItem(ids, params,{myId:'form:j_id_jsp_1202636422_8',parentId:'form:j_id_jsp_1202636422_4'},
{type:"item",onopen:"",onclose:"",event:"click",mode:"ajax",target:"",disabled:false,target:"",name:"j_id_jsp_1202636422_8"},{},new Array("rich-pmenu-hovered-
element"),1,false,true,false,"A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form:j_id_jsp_1202636422_8','parameters':
{'form:j_id_jsp_1202636422_8':'form:j_id_jsp_1202636422_8'} ,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} 
)","","left","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit
.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf" ,"" 
,"/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer/DATB/eAFjCGAAAACjAFE_.jsf");
var params = new Object();new PanelMenuItem(ids, params,{myId:'form:j_id_jsp_1202636422_9',parentId:'form:j_id_jsp_1202636422_4'},
{type:"item",onopen:"",onclose:"",event:"click",mode:"ajax",target:"",disabled:false,target:"",name:"j_id_jsp_1202636422_9"},{},new Array("rich-pmenu-hovered-
element"),1,false,false,false,"A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form:j_id_jsp_1202636422_9','parameters':
{'form:j_id_jsp_1202636422_9':'form:j_id_jsp_1202636422_9'} ,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} 
)","","left","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit
.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf" ,"" 
,"/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer/DATB/eAFjCGAAAACjAFE_.jsf");
var params = new Object();new PanelMenuItem(ids, params,{myId:'form:j_id_jsp_1202636422_10',parentId:'form:j_id_jsp_1202636422_4'},
{type:"item",onopen:"",onclose:"",event:"click",mode:"ajax",target:"",disabled:false,target:"",name:"j_id_jsp_1202636422_10"},{},new Array("rich-pmenu-hovered-
element"),1,false,true,false,"A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form:j_id_jsp_1202636422_10','parameters':
{'form:j_id_jsp_1202636422_10':'form:j_id_jsp_1202636422_10'} ,'containerId':'j_id_jsp_1202636422_0','actionUrl':'/amazonia/pages/default.jsf'} 
)","","left","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf","/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit
.html.iconimages.PanelMenuIconGrid/DATB/eAFjCGAAAACjAFE_.jsf" ,"" 
,"/amazonia/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.PanelMenuIconSpacer/DATB/eAFjCGAAAACjAFE_.jsf");
&lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div id="form:painelModulo"&gt;&lt;span id="form:painelModulo2"&gt;vazia.jsp&lt;/span&gt;  
		&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;

    








&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;
	&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;input type="hidden" autocomplete="off" name="form" value="form" /&gt;&lt;input type="hidden" autocomplete="off" name="autoScroll" value="" /&gt;&lt;input type="hidden" autocomplete="off" name="form:j_idcl" value="" /&gt;&lt;input type="hidden" autocomplete="off" name="form:_link_hidden_" value="" /&gt;&lt;script type="text/javascript"&gt;function clear_form() {
_clearJSFFormParameters('form','',['form:j_idcl','form:_link_hidden_']);
}
function clearFormHiddenParams_form(){clear_form();}
function clearFormHiddenParams_form(){clear_form();}
clear_form();&lt;/script&gt;&lt;script type="text/javascript"&gt;A4J.setupForm('form');&lt;/script&gt;&lt;input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id53" autocomplete="off" /&gt;&lt;/form&gt;	
&lt;/body&gt;
&lt;/html&gt;
M

dei uns enter na página gerada pra tela aqui no guj não fica imensa pro lado…

mais alguma sugestão??

R

tenta colocar isto:
<h:form id=‘formulario’ prependId=‘false’> …

e nos menus coloca o reRender=‘formulario:id_do_componente_para_rerender’

tenta ai e diz.

R

Ha e se vc perceber tem outra coisa errada, pois a formação da página esta errada.

R

e tb nao vai precisar nem de f:view e nem de f:subview, por isto a formação da página esta errada.

nas páginas que serão trazidas por ajax, só precisa de ui:composition mesmo.
em seu template é que vai ficar todo o cabeçalho da página tipo:

<?xml version="1.0" encoding="UTF-8"?>
<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"
				xmlns:a4j="http://richfaces.org/a4j"
				xmlns:rich="http://richfaces.org/rich"
				xmlns:t="http://myfaces.apache.org/tomahawk"
				xmlns:c="http://java.sun.com/jstl/core"
				template="/jsf/applicationTemplate.jsp">

no applicationTemplate vai ter:

<?xml version="1.0" encoding="UTF-8"?>
<html	
	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:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:c="http://java.sun.com/jstl/core">


<a4j:outputPanel ajaxRendered="true" id="mainOutputPanel" layout="block">
		<a4j:form>
.....

Este erro é pertinente, mas acho que esta perto de solucionar-mos.

M

não deu certo... quando eu fiz isso não atualizava a tela incluida nem com o F5 mais... inclusive tb não tinha aquela mensagem do jsf de que o componente com esse id nao foi encontrado:

19/05/2011 09:54:53 org.ajax4jsf.context.AjaxContextImpl convertId
AVISO: Target component for id formulario:content not found

eu fiz o teste usando a4j:form ao invés do h:form e apontando para o id da mesma forma, e ai tudo voltou a funcionar como antes (sem atualiza a página sem o refresh)... com e sem o prependId...

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%&gt;
    
&lt;%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
&lt;%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;

&lt;%@taglib uri="http://richfaces.org/rich" prefix="rich" %&gt;
&lt;%@taglib uri="http://richfaces.org/a4j" prefix="a4j" %&gt;

&lt;%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor="#DCDCDC"&gt;
&lt;f:view&gt;
	
&lt;%--	&lt;h:form id='formulario' prependId='false'&gt; --%&gt;
	&lt;a4j:form id="formulario" ajaxSubmit="true" ajaxSingle="true" prependId="false"&gt;
    &lt;h:panelGrid columns="2" width="400"&gt;
	
	&lt;rich:panelMenu style="width:200px"  mode="ajax" 
        iconExpandedGroup="disc" iconCollapsedGroup="disc" 
        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" 
        iconCollapsedTopGroup="chevronDown"&gt;
        
        &lt;rich:panelMenuGroup label="Cadastro"&gt;
            &lt;rich:panelMenuItem label="painelModulo al" actionListener="#{panelMenu.cadastros}" reRender="formulario:painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo a" action="#{panelMenu.cadastros}" reRender="formulario:painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 al" actionListener="#{panelMenu.cadastros}" reRender="formulario:painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 a" action="#{panelMenu.cadastros}" reRender="formulario:painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="content al" actionListener="#{panelMenu.cadastros}" reRender="formulario:content" /&gt;
            &lt;rich:panelMenuItem label="content a" action="#{panelMenu.cadastros}" reRender="formulario:content" /&gt;
            
        &lt;/rich:panelMenuGroup&gt;
        
    &lt;/rich:panelMenu&gt;
	
	&lt;%-- 
	&lt;h:panelGroup id=&quot;content&quot; layout=&quot;block&quot;&gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/h:panelGroup&gt;
	 --%&gt;
	 
	&lt;%-- --%&gt;
	&lt;a4j:outputPanel ajaxRendered="true" layout="block" id="painelModulo" &gt;  
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/a4j:outputPanel&gt;
	&lt;%--  --%&gt;
	
    &lt;%-- 
    &lt;rich:panel id=&quot;painelModulo&quot;  style=&quot; background: transparent;border: none;&quot;  &gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/rich:panel&gt;
	 --%&gt;
    
	&lt;/h:panelGrid&gt;
    &lt;/a4j:form&gt;
&lt;%--	&lt;/h:form&gt;--%&gt;
&lt;/f:view&gt;	
&lt;/body&gt;
&lt;/html&gt;
M

rjbcordeiro me tira uma dúvida, essa parte de template e a taglib ui é do facelets não é?

eu não o estou usando, tenho que usar?

R

acho que vc vai ter que usar sim.
da uma olhada aqui:

http://richfaces-showcase.appspot.com/richfaces/component-sample.jsf?demo=panelMenu&skin=blueSky

A

Mais uma idéia …

tira o

<h:panelGroup id="content" layout="block">  
         <a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"></a4j:include>  
     </h:panelGroup>

de dentro do form … deixe só o menu no form …

e testa ai…

outro ponto é tentar colocar o content dentro de uma a4j:region

<a4j:region renderRegionOnly="true">
<h:panelGroup id="content" layout="block">  
         <a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"></a4j:include>  
     </h:panelGroup>
</a4j:region>

obs. quando fiz o meu projeto, também utilizei facelets para construir os templates … não tenho certeza também se dá pra fazer isso sem o facelets …
mas testa esse lance do form ai … e dá um reRender em content …

Outra coisa, essas mensagens de não encontrou o id content quando você chama outro método que não dá reRender em content está estranho … não seria cache do browser ??

[]'s

M

alex.brito

então... essas mensagens deram quando eu comentei este painel e descomentei o outro para testar com o outro... se eu deixa esse e comenta o outro ai da a mensagem quandoeu clico no menu que aponta para o outro... normal, tecnicamente o painel em questão que reclamo não existe mesmo (eu aproveitei isso pra ver se o a4j intendeu que o componente está la ou não...)..

eu vou fazer os testes que você disse.

alex.brito e rjbcordeiro

então... estou lendo sobre o facelets, estou começando os meus primeiros testes agora... pretendo pensar direito em template só depois que ver isso funcionando (ainda estou estudando o facelets), ou preciso do template para isso funcionar?

atualmente meus jsps estão desse jeito:

default.jspx:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html      
    xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;  
    xmlns:h=&quot;http://java.sun.com/jsf/html&quot;  
    xmlns:f=&quot;http://java.sun.com/jsf/core&quot;  
    xmlns:a4j=&quot;http://richfaces.org/a4j&quot;  
    xmlns:rich=&quot;http://richfaces.org/rich&quot;  
    xmlns:c=&quot;http://java.sun.com/jstl/core&quot;&gt;  
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot; /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#DCDCDC&quot;&gt;
	
	&lt;a4j:form id=&quot;formulario&quot; ajaxSubmit=&quot;true&quot; ajaxSingle=&quot;true&quot; prependId=&quot;false&quot;&gt;
    &lt;h:panelGrid columns=&quot;2&quot; width=&quot;400&quot;&gt;
	
	&lt;rich:panelMenu style=&quot;width:200px&quot;  mode=&quot;ajax&quot; 
        iconExpandedGroup=&quot;disc&quot; iconCollapsedGroup=&quot;disc&quot; 
        iconExpandedTopGroup=&quot;chevronUp&quot; iconGroupTopPosition=&quot;right&quot; 
        iconCollapsedTopGroup=&quot;chevronDown&quot;&gt;
        
        &lt;rich:panelMenuGroup label=&quot;Cadastro&quot;&gt;
            &lt;rich:panelMenuItem label=&quot;painelModulo al&quot; actionListener=&quot;#{panelMenu.cadastros}&quot; reRender=&quot;formulario:painelModulo&quot; /&gt;
            &lt;rich:panelMenuItem label=&quot;painelModulo a&quot; action=&quot;#{panelMenu.cadastros}&quot; reRender=&quot;formulario:painelModulo&quot; /&gt;
            &lt;rich:panelMenuItem label=&quot;painelModulo2 al&quot; actionListener=&quot;#{panelMenu.cadastros}&quot; reRender=&quot;formulario:painelModulo2&quot; /&gt;
            &lt;rich:panelMenuItem label=&quot;painelModulo2 a&quot; action=&quot;#{panelMenu.cadastros}&quot; reRender=&quot;formulario:painelModulo2&quot; /&gt;
            &lt;rich:panelMenuItem label=&quot;content al&quot; actionListener=&quot;#{panelMenu.cadastros}&quot; reRender=&quot;formulario:content&quot; /&gt;
            &lt;rich:panelMenuItem label=&quot;content a&quot; action=&quot;#{panelMenu.cadastros}&quot; reRender=&quot;formulario:content&quot; /&gt;
            
        &lt;/rich:panelMenuGroup&gt;
        
    &lt;/rich:panelMenu&gt;
	
	&lt;a4j:outputPanel ajaxRendered=&quot;true&quot; layout=&quot;block&quot; id=&quot;painelModulo&quot; &gt;  
		&lt;a4j:include id=&quot;painelModulo2&quot;  viewId=&quot;#{panelMenu.page}&quot;&gt;&lt;/a4j:include&gt;
	&lt;/a4j:outputPanel&gt;
	    
	&lt;/h:panelGrid&gt;
    &lt;/a4j:form&gt;
	
&lt;/body&gt;
&lt;/html&gt;

managed bean:

package br.com.triad.jsf.managedbeans;

import javax.faces.event.ActionEvent;

public class Menu {
	
	private String page = &quot;/pages/vazia.jspx&quot;;
	
	
	public void cadastros(ActionEvent e){
		System.out.println(&quot;cadastro chamado&quot;);
		this.page = &quot;/pages/cadastro.jspx&quot;;
	}

	public String cadastros(){
		System.out.println(&quot;cadastro chamado 2&quot;);
		this.page = &quot;/pages/cadastro.jspx&quot;;
		return &quot;cadastro&quot;;
	}

	public String getPage() {
		return page;
	}

	public void setPage(String page) {
		this.page = page;
	}
	
	
	
}
vazia.jspx:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html      
    xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;  
    xmlns:h=&quot;http://java.sun.com/jsf/html&quot;  
    xmlns:f=&quot;http://java.sun.com/jsf/core&quot;  
    xmlns:a4j=&quot;http://richfaces.org/a4j&quot;  
    xmlns:rich=&quot;http://richfaces.org/rich&quot;  
    xmlns:c=&quot;http://java.sun.com/jstl/core&quot;&gt;  
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot; /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;h:outputText value=&quot;vazia.jsp&quot; /&gt;
&lt;/body&gt;
&lt;/html&gt;
cadastro.jspx
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html   
    xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;  
    xmlns:h=&quot;http://java.sun.com/jsf/html&quot;  
    xmlns:f=&quot;http://java.sun.com/jsf/core&quot;  
    xmlns:a4j=&quot;http://richfaces.org/a4j&quot;  
    xmlns:rich=&quot;http://richfaces.org/rich&quot;  
    xmlns:c=&quot;http://java.sun.com/jstl/core&quot;&gt;  

&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot; /&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;h:outputText value=&quot;tela de cadastro exemplo&quot; /&gt;
&lt;/body&gt;
&lt;/html&gt;
faces-config:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"&gt;
 &lt;managed-bean&gt;
  &lt;managed-bean-name&gt;login&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.triad.jsf.managedbeans.Login&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;
 &lt;managed-bean&gt;
  &lt;managed-bean-name&gt;panelMenu&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.triad.jsf.managedbeans.Menu&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;
 &lt;navigation-rule&gt;
  &lt;from-view-id&gt;/*&lt;/from-view-id&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;login&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/login.jspx&lt;/to-view-id&gt;
  &lt;/navigation-case&gt;
 &lt;/navigation-rule&gt;
 &lt;navigation-rule&gt;
  &lt;from-view-id&gt;/pages/login.jspx&lt;/from-view-id&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;OK&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/default.jspx&lt;/to-view-id&gt;
   &lt;redirect/&gt;
  &lt;/navigation-case&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;NOK&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/login.jspx&lt;/to-view-id&gt;
  &lt;/navigation-case&gt;
 &lt;/navigation-rule&gt;
 &lt;application&gt;
  &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
 &lt;/application&gt;
 &lt;lifecycle&gt;
  &lt;phase-listener&gt;br.com.triad.util.filter.LoginPhaseListener&lt;/phase-listener&gt;
 &lt;/lifecycle&gt;
&lt;/faces-config&gt;

está certo isso?

M

alex.brito:
Mais uma idéia …

tira o

<h:panelGroup id="content" layout="block">  
         <a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"></a4j:include>  
     </h:panelGroup>

de dentro do form … deixe só o menu no form …

e testa ai…

outro ponto é tentar colocar o content dentro de uma a4j:region

<a4j:region renderRegionOnly="true">
<h:panelGroup id="content" layout="block">  
         <a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"></a4j:include>  
     </h:panelGroup>
</a4j:region>

obs. quando fiz o meu projeto, também utilizei facelets para construir os templates … não tenho certeza também se dá pra fazer isso sem o facelets …
mas testa esse lance do form ai … e dá um reRender em content …

Outra coisa, essas mensagens de não encontrou o id content quando você chama outro método que não dá reRender em content está estranho … não seria cache do browser ??

[]'s

eu tentei colocar o a4j:form só com o menu dentro, e o painel com a4j:region dentro, de painel tentei com o h:panelGroup e o a4j:outputPanel, referenciando no reRender o id tanto com o nome do formulario antes quanto sem isso. Não deu certo…

19/05/2011 11:31:39 org.ajax4jsf.context.AjaxContextImpl convertId
AVISO: Target component for id formulario:painelModulo2 not found

mais alguma sugestão?

eu tendo um tempinho eu vo refazer os testes… se tiverem mais alguma sugestão eu fico agradecido…

A

Então, quando você tira o include de dentro do form, o id dele não tem mais o nome do form como prefixo (form:content)… seria algo parecido com reRender=“content”… mas teria que utilizar o <h:form> normal … sem o prependId=‘false’ …

voce tirou o “prependId=‘false’” do form ???

To ficando sem idéias …rs … vamos tentar com facelets ?? rs

[]'s

M

então... eu estou usando facelets, só o básico pelo que vi, não quero pensa em template por exemplo agora... veja os meus códigos postados no ultimo post...

testei aqui do jeito que estou colando abaixo e não deu certo...
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html      
    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:a4j="http://richfaces.org/a4j"  
    xmlns:rich="http://richfaces.org/rich"  
    xmlns:c="http://java.sun.com/jstl/core"&gt;  
&lt;head&gt;
	&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /&gt;
	&lt;title&gt;Insert title here&lt;/title&gt;
	
	&lt;link rel="stylesheet" type="text/css" href="../css/estilos.css" /&gt;
	
&lt;/head&gt;
&lt;body bgcolor="#DCDCDC"&gt;
	
	
    &lt;h:panelGrid columns="2" width="400"&gt;
	
	

	
	&lt;h:form&gt;
	&lt;rich:panelMenu style="width:200px"  mode="ajax" 
        iconExpandedGroup="disc" iconCollapsedGroup="disc" 
        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" 
        iconCollapsedTopGroup="chevronDown"&gt;
        
        &lt;rich:panelMenuGroup label="Cadastro"&gt;
            &lt;rich:panelMenuItem label="painelModulo al" actionListener="#{panelMenu.cadastros}" reRender="painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo a" action="#{panelMenu.cadastros}" reRender="painelModulo" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 al" actionListener="#{panelMenu.cadastros}" reRender="painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="painelModulo2 a" action="#{panelMenu.cadastros}" reRender="painelModulo2" /&gt;
            &lt;rich:panelMenuItem label="content al" actionListener="#{panelMenu.cadastros}" reRender="content" /&gt;
            &lt;rich:panelMenuItem label="content a" action="#{panelMenu.cadastros}" reRender="content" /&gt;
        &lt;/rich:panelMenuGroup&gt;
        
    &lt;/rich:panelMenu&gt;
    &lt;/h:form&gt;
	
	&lt;a4j:region renderRegionOnly="true"&gt;  
	&lt;h:panelGroup id="content" layout="block"&gt;
		&lt;a4j:include id="painelModulo2"  viewId="#{panelMenu.page}"&gt;&lt;/a4j:include&gt;
	&lt;/h:panelGroup&gt;
	&lt;/a4j:region&gt;
	    
	&lt;/h:panelGrid&gt;
    
	
&lt;/body&gt;
&lt;/html&gt;
M

tem como passa um exemplo completo que você ja tenha para eu tentar fazer aqui?

ai fazendo funciona esse seu exemplo eu vejo o que alterar…

A

então, peguei suas classes, e estou tentando configurar um ambiente aqui … mas tá meio corrido … assim que eu conseguir eu já posto uma msg.

[]'s

M

obrigadão cara antes de tudo…

não precisa ter pressa não… to fazendo outras coisas também…

A

Vamos lá cara.

Seguinte, para esse teste eu utilizei … Netbeans 6.9, Glassfish3, JSF 1.2, jsf-facelets-1.1.15.B1.jar, richfaces-3.3.3.Final …

configurei meu web-xml dessa forma:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
	version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <display-name>testeFacelets</display-name>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

	<!-- SERVLETS -->

	<!-- Declaração do servlet do Faces -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>

	<!-- CONTEXT-PARAMS -->

	<!-- Indica os arquivos de configuracao do JSF -->
    <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>
			/WEB-INF/faces-config.xml,
        </param-value>
    </context-param>

	<!-- Indica a extensão de arquivo usado pelo facelets -->
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

    <context-param>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>false</param-value>
    </context-param>

	<!--
		Parâmetro usado para o jboss usar a bibliotecas do jsf do WEB-INF/lib
		e não as dele
	-->
<!--	<context-param>
		<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
		<param-value>true</param-value>
	</context-param>-->

	<!-- Indica para o Richfaces qual é a skin que deverá ser usada -->
    <context-param>
        <param-name>org.richfaces.SKIN</param-name>
        <param-value>darkX</param-value>
    </context-param>

	<!-- Habilita o esquema de skin do richfaces -->
    <context-param>
        <param-name>org.richfaces.CONTROL_SKINNING</param-name>
        <param-value>enable</param-value>
    </context-param>

	<!-- Indica para o Richfaces que o Facelets será usado como view handler -->
    <context-param>
        <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
        <param-value>com.sun.facelets.FaceletViewHandler</param-value>
    </context-param>

	<!-- Filtro do richfaces para tratar requisições ajax -->
    <filter>
        <display-name>RichFaces Filter</display-name>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
</web-app>

o faces-config ficou assim:

<?xml version="1.0" encoding="UTF-8"?>

<faces-config version="1.2"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xi="http://www.w3.org/2001/XInclude"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">

	<!--   - - - - - - - - - - - - -   -->
	<!--   M A N A G E D   B E A N S   -->
	<!--   - - - - - - - - - - - - -   -->

    <managed-bean>
        <managed-bean-name>panelMenu</managed-bean-name>
        <managed-bean-class>guj.PanelMenu</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>


    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>
        
</faces-config>

Meu managed bean ficou assim:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package guj;

/**
 *
 * @author abrito
 */
public class PanelMenu {

    private String page = "/home.xhtml";

    public void cadastro() {
        setPage("/include.xhtml");
    }

    public void home() {
        setPage("/home.xhtml");
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }


}

ai tenho essas paginas: index.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
    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:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Insert title here</title>
    </head>
    <body bgcolor="#DCDCDC">

        <f:view>
            <h:panelGroup id="divMenu" layout="block" style="float:left; width:30%;">
                <a4j:form id="formulario">
                    <h:panelGrid columns="2" width="400">

                        <rich:panelMenu style="width:200px"
                                        iconExpandedGroup="disc" iconCollapsedGroup="disc"
                                        iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right"
                                        iconCollapsedTopGroup="chevronDown">

                            <rich:panelMenuGroup label="Cadastro">
                                <rich:panelMenuItem label="painelModulo a" action="#{panelMenu.cadastro}" reRender="divInclude" />
                            </rich:panelMenuGroup>

                            <rich:panelMenuGroup label="Votlar">
                                 <rich:panelMenuItem label="Voltar HOme" action="#{panelMenu.home}" reRender="divInclude" />
                            </rich:panelMenuGroup>

                        </rich:panelMenu>
                    </h:panelGrid>
                </a4j:form>
            </h:panelGroup>


            <h:panelGroup id="divInclude" layout="block" style="float:left; width:70%;">
                <a4j:include id="painelModulo2"  viewId="#{panelMenu.page}" />
            </h:panelGroup>
        </f:view>
    </body>
</html>

agora a home.xhtml:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
    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:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Insert title here</title>
    </head>
    <body bgcolor="#DCDCDC">

        <f:subview id="subViewHome">

            <h:panelGroup id="divHome" layout="block" style="border: 3px solid red; float:left; width:68%;">
                <h1>PAGINA HOME</h1>
            </h:panelGroup>

        </f:subview>
    </body>
</html>

e por ultimo, mas não menos importante (rs…rs) a include.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
    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:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Insert title here</title>
    </head>
    <body bgcolor="#DCDCDC">

        <f:subview id="subViewTeste">

            <h:panelGroup id="divTeste" layout="block" style="border: 3px solid green; float:left; width:70%;">
                <h1>PAGINA INCLUDE TESTE</h1>
            </h:panelGroup>

        </f:subview>
    </body>
</html>

Bom cara, basicamente é isso. Aqui o menu funcionou, quando clico na opção ele rederiza meu conteudo principal (o que contem as bordas coloridas).
Para comprovarmos que ele não está reconstruindo toda a view, é só repararmos que o menu fica “aberto/expandido”.

Depois, voce dá uma olhada em como construir templates com facelets (ui:composition), que dessa forma é mais claro, assim você conseguira ver que ele só renderiza o meio, seu header e footer e menu permace inalterado …

Então, é isso …

testa ai … e depois dá um ok…

[]'s

M

antes de tudo fico grato pela ajuda…

sei que não vou ter tempo de testar isso hoje, então vou testar amanhã… muuuito obrigado mesmo pelo exemplo, assim que testar volta para dizer o resultado.

Obrigado denovo.

M

apenas atualizando…

eu peguei esse exemplo e fiz funcionar no eclipse aqui em casa… funcionou…

cara…muuuuuito obrigado por me ajudar com isso… segunda ou terça feira agora eu vou replicar isso na empresa no projeto que estava construindo…

muito obrigado denovo…

A

Opa, que bom que funcionou …
Só mais um pedido agora, se possível, quando puder coloque [RESOLVIDO] no tópico, a comunidade agradece …

Um abraço e boa sorte na implantação … rs

vlw.

M

eu não mudei no final de semana por que estava pensando em só fazer isso quando estivesse funcionando isso no meu projeto aki na empresa…

bom está funcionando a abertura da pagina incluida no painel via ajax, nem vo postar como que ficou por que ai em cima ja tem um exemplo funcional.

Apenas uma dica aos usuários do eclipse (com jboss tools), ao usar a funcionalidade do jboss tools "add custom capabilities" (clicando com o botão direito e selecionando esta opção ) para adicionar as libs do rich faces e do facelets em um projeto normal, da diferença isso ou criando o projeto jsf ja com facelets e adicionando o rich faces… em um deles (não lembro qual) ao tentar acessar uma página xhtml o browser estava tentanto fazer download da página ao invés de abri-la.

agora eu estou com um outro problema, caracteres com acentuação e ç estão vindo zuados, tanto em ISO-8859-1, quanto em UTF-8, alex.brito, rjbcordeiro ou alguém vocês ja passaram por isso?

editando… foi falha minha, ao copiar as páginas de um projeto pro outro no eclipse zuou de alguma forma estes caracteres… editei aqui e deixei como utf-8 na declaração do xml em cima e funcionou numa boa… ficou da seguinte forma:

<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE composition PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

aparentemente tudo resolvido, agradeço ao alex.brito, rjbcordeiro pela ajuda.

R

tem um bom exemplo aqui:
http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=1251&start=10

Criado 18 de maio de 2011
Ultima resposta 27 de jun. de 2011
Respostas 38
Participantes 3