[resolvido] atualizar a4j:include não funciona, a pagina adicionada não é atualizada  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

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:



o managed bean é o seguinte:






as primeiras várias linhas do stack trace:


This message was edited 4 times. Last update was at 23/05/2011 10:38:44


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

apenas acrescentando, tousando eclipse helios e tomcat 7...

This message was edited 1 time. Last update was at 18/05/2011 10:22:05


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

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

espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
rjbcordeiro
JavaEvangelist

Membro desde: 27/03/2007 09:10:23
Mensagens: 307
Localização: Olinda - PE
Offline

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

Não desista

topico == resolvido ? '[RESOLVIDO]' : :'(
[Email]
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

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.

espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
alex.brito
JavaChild

Membro desde: 26/05/2009 07:39:01
Mensagens: 113
Offline

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
rjbcordeiro
JavaEvangelist

Membro desde: 27/03/2007 09:10:23
Mensagens: 307
Localização: Olinda - PE
Offline

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

Não desista

topico == resolvido ? '[RESOLVIDO]' : :'(
[Email]
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

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.


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

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


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

alex.brito wrote: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

This message was edited 1 time. Last update was at 18/05/2011 15:44:23


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

meu código no momento está assim:

pagina principal (default.jsp)



managed bean:



faces-config.xml:






espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
alex.brito
JavaChild

Membro desde: 26/05/2009 07:39:01
Mensagens: 113
Offline

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

[]'s



This message was edited 2 times. Last update was at 18/05/2011 16:01:47

rjbcordeiro
JavaEvangelist

Membro desde: 27/03/2007 09:10:23
Mensagens: 307
Localização: Olinda - PE
Offline

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:



a actionMenu:




eu usei um template mas... ve ai


bom tinha um outro template que chamava este aqui.

template.xhtml



aqui uma pagina de usuario:


web.xml





faces-config.xml


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;



Não desista

topico == resolvido ? '[RESOLVIDO]' : :'(
[Email]
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

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.


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
alex.brito
JavaChild

Membro desde: 26/05/2009 07:39:01
Mensagens: 113
Offline

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



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

This message was edited 1 time. Last update was at 19/05/2011 07:04:26

maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline


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:


This message was edited 1 time. Last update was at 19/05/2011 07:25:59


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team