JSF - passagem parâmetro com ViewScope  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
viniciuspadua
JavaEvangelist
[Avatar]

Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline

Tenho uma página (abaixo) que chama um método passando um parâmetro qualquer (no caso valor 4)



No método consigo receber o parâmetro em questão. Entretanto quando a página é exibida (abaixo) o valor fica zerado, como se não tivesse sido recebido nada.



Percebi algo interessante, a classe marComp tem o scope @ViewScope fiz a alteração para @RequestScope e simplesmente o parâmetro funcionou! Com isso fiquei na dúvida como passo um parâmetro para uma classe anotada com @ViewScope /
dev.rafael
Virtual Machine Man
[Avatar]

Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline

Vc já tentou:

"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz
[Email]
viniciuspadua
JavaEvangelist
[Avatar]

Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline

nem compila! tb testei colocado [4] ao invés do (4)! tb não funciona!
dev.rafael
Virtual Machine Man
[Avatar]

Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline

Como pode ñ compilar. Trata-se de um arquivo .xhtml. Ñ importa o absurdo q vc coloca nesse arquivo isso ñ impedir q o seu projeto seja compilado com sucesso, embora ele possa ñ rodar p/ causa disso.
Tem certeza q o erro ñ está em outro lugar?

"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz
[Email]
viniciuspadua
JavaEvangelist
[Avatar]

Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline

foi na hora de exibir a página!

dev.rafael
Virtual Machine Man
[Avatar]

Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline

Testei o essa forma de passagem de parametro funciona perfeitamente:


"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz
[Email]
viniciuspadua
JavaEvangelist
[Avatar]

Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline

Usando @RequestScoped funciona completo! chega o parâmetro no método e segue para página!
ja com o @ViewScoped, que é o que estou usando, o parâmetro chega no método, mais não na página!

This message was edited 1 time. Last update was at 12/11/2010 15:12:04

dev.rafael
Virtual Machine Man
[Avatar]

Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline



Sem nenhum erro p/ mim. Certamente o problema é em outro lugar. Eu estou testando no Glassfish v3. Verifique a seu server e se ñ há nenhuma configuração q possa estar gerando o conflito.

"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz
[Email]
viniciuspadua
JavaEvangelist
[Avatar]

Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline

Vou tentar explicar melhor meu problema!

Imagine a situação abaixo!










Se colocar @RequestEscoped os parâmetros são passados através das classes e páginas! Entretanto se for com @ViewEscoped isso não ocorre! Como passo um parâmetro de uma página para outra através do viewScope?
dev.rafael
Virtual Machine Man
[Avatar]

Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline

Vc pode fazer isso:




"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz
[Email]
viniciuspadua
JavaEvangelist
[Avatar]

Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline

agora deu certo! Valeu!

So para finalizar! tenho como chamar um método assim que a página for aberta, pq eu pego os parâmetros e os valores são modificados, mais tenho que chamar o método de forma automática para popular o grid!
dev.rafael
Virtual Machine Man
[Avatar]

Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline

Kra, os componentes <h:button> e <h:link> executam requisições do tipo GET, tanto q nem necessitam de um form. Infelismente a atual versão do JSF ñ suporta actions em requisições GET, embora vc possa simular isso usando os próprios getters da classe. Esse tipo de solução é deselegante e sugeito a erros. Vejamos se isso te ajuda.

Vc precisa ter cuidado quando estiver usando o @ViewScoped pois vc ainda ñ o compreendeu. O @ViewScoped vincula um ManagedBean à uma view (.xhtml) e esse ManagedBean é removido quando vc navega p/ outra página. Veja isso:

Nesse código a passagem de parametro realmente ñ vai funcionar pois o quando o método action() é chamado o ManagedBean viewBean está vinculado à view a.xhtml mas o método navega p/ a página b.xhtml. b.xhtml é uma outra view e portanto qualquer viewBean referenciado ai será diferente do referenciado na view a.xhtml.

O q eu quero dizer é q vc ñ deve usar ManagedBean @ViewScoped em operações q envolvam navegação. Esse escopo foi consebido p/ dar suporte à operações ajax q acontencem sem vc mudar de página. Quando vc precisar transportar informações de uma página p/ outra a maneira corréta de faze-lo é através de ManagedBean @RequestScoped.

"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz
[Email]
viniciuspadua
JavaEvangelist
[Avatar]

Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline

eu to +- entendo a questão do ViewScope!
Mais algumas funcionalidade do primefaces so funciona com esse escopo!
E esta página tb porá vir ser necessário uma passa de parâmetro. Por isso a questão acima!

Com suas dicas resolvi o problema da passagem de parâmetros!

Fiz um javascript para ao finalizar o load da página clicar em um btn que server para atualizar o grid!

No final deu certo!
Sandro Queiroz
Thread.start()
[Avatar]

Membro desde: 11/06/2010 16:36:51
Mensagens: 34
Offline

Olá viniciuspadua...

Será se vc poderia postar a solução que vc encontrou?

Estou tendo a mesma dificuldade e talvez o seu javascript me ajude...Obrigado!!!

Sandro Queiroz Júnior @sandroqz

Sandro Queiroz | Blog




[WWW]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team