| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 08:02:38
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 10:20:30
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 12:04:27
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 14:20:15
|
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]' : :'( |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 14:24:55
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 14:34:59
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 14:49:11
|
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]' : :'( |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 15:28:27
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 15:42:21
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 15:49:55
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 15:59:13
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 16:10:24
|
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]' : :'( |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2011 19:57:53
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2011 07:03:25
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2011 07:25:16
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
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.
|
|
|
 |
|
|