| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 12:17:22
|
rafabh3
Thread.start()
![[Avatar]](/images/avatar/fc1b21b3aaf3144bf9d2d69d57982563.jpg)
Membro desde: 17/06/2011 10:46:40
Mensagens: 25
Offline
|
Boa tarde pessoal,
Estou com um problema para pegar objetos selecionados no combo, estive pesquisando e ouvi falar sobre converters e em alguns casos vi que ele nao é necessário.
Eu fiz da seguinte maneira. Criei um atributo no MB que receberia esse objeto selecionado, mas por alguma razao ele nao está setando o atributo.
Abaixo segue meu código para ajudar.
Bean
***O atributo preTarefa é o que deveria receber o objeto do combo.
XHTML
Se puderem me ajudar ficarei extremamente agradecido! Abraços!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 12:27:25
|
alissonvla
GUJ Master
Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline
|
cara,
vc tem que criar um custom converter.
t+
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 12:35:48
|
FernandoFranzini
GUJ Master
![[Avatar]](/images/avatar/33f6c40df1060aa3c548ad2d499eced0.jpg)
Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline
|
No JSF 2 da para pegar direto sem converter mas não sei aonde eu vi...De uma procurada.
This message was edited 1 time. Last update was at 03/11/2011 12:37:19
|
Fernando Franzini |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 13:08:12
|
leonardobhbr
Virtual Machine Man
![[Avatar]](/images/avatar/e18cfe46b96c30852b565e561152d055.jpg)
Membro desde: 10/08/2006 16:22:17
Mensagens: 530
Offline
|
Eu tinha visto que dava, só que até hoje não achei onde.
Use converter
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 13:14:36
|
rafabh3
Thread.start()
![[Avatar]](/images/avatar/fc1b21b3aaf3144bf9d2d69d57982563.jpg)
Membro desde: 17/06/2011 10:46:40
Mensagens: 25
Offline
|
Estou lendo aqui a respeito, já implementei um exemplo sem converter, mas ano funcionou, vou tentar com converter mesmo! Muito obrigado a todos!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 13:23:32
|
ederfreitas
JavaTeenager
![[Avatar]](/images/avatar/23b618784dfc816fdc6571427206ee16.jpg)
Membro desde: 07/01/2011 11:21:28
Mensagens: 153
Localização: Cascavel - PR
Offline
|
.
This message was edited 1 time. Last update was at 03/11/2011 13:24:21
|
Eder F. Freitas
"OCJP Estudando..."
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 13:29:51
|
FernandoFranzini
GUJ Master
![[Avatar]](/images/avatar/33f6c40df1060aa3c548ad2d499eced0.jpg)
Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline
|
Esta ai sem conversor:
|
Fernando Franzini |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/11/2011 13:46:42
|
leonardobhbr
Virtual Machine Man
![[Avatar]](/images/avatar/e18cfe46b96c30852b565e561152d055.jpg)
Membro desde: 10/08/2006 16:22:17
Mensagens: 530
Offline
|
FernandoFranzini wrote:Esta ai sem conversor:
Ja fiz assim e não funcionou pelo menos comigo tanto que ao usar o converter fica igual o codigo nao muda apenas adiciona o converter
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 15:01:46
|
lindberg713
JavaChild
![[Avatar]](/images/avatar/e9aa53dfacbc30e3e4a75cffcdcc0755.png)
Membro desde: 21/03/2009 12:53:35
Mensagens: 127
Offline
|
Já passei pelo mesmo problema ha algum tempo atrás e posto aqui a minha solução para JSF 2 usando prime faces. Tenho tb uma solução para JSF 1 usando richfaces, quem tiver interesse postar aqui que eu mando.
JSF 2.0 COM PRIME FACES.
ANTES DE COMEÇAR É NECESSÁRIO DIZER QUE PARA A SOLUÇÃO ABAIXO FUNCIONAR VOCÊ TEM QUE NA CLASSES DE SUAS ENTIDADES VOCÊ SOBRESCREVER EXPLICITAMENTE OS MÉTODOS equals E hashcode. Para o exemplo abaixo funcionar a classe Cliente teria que sobrescrever o método equals e hashcode. Como você não vai ta fazendo isso em todas as suas classes de entidade, então basta criar uma superclasse abstrata de entidade e sobrescrever esses métodos lá e todas as entidades estendenrão desta. Por exemplo uma classe chamada Entidade que é abstrata.
OUTRA COISA IMPORTANTE É QUE DA FORMA COMO O CONVERTER ESTA IMPLEMENTADO ABAIXO ELE ESPERA QUE O ITEM TENHA UM ATRIBUTO CHAMADO 'id' QUE É O IDENTIFICADOR NORMALMENTE USADO PARA ENTIDADES. CASO NO SEU PROJETO TENHA OUTRO PADRÃO FIQUE A VONTADE PARA MUDAR A PROPRIEDADE NO MÉTODO getIdByReflection DO CONVERTER.
Para tal é necessário colocar o converter abaixo:
Nosso MB:
Então para usar basta definir ele como sendo o converter e colocar explicitamente um atributo chamado 'items' na tag selectOneMenu como abaixo.
Pronto, nossa combo do JSF ta funcionando belezinha.
É isso ai, qualquer coisa posta ae.
Victor Lindberg
|
Abraço,
Victor Lindberg
- Seu projeto usa JDBC? Veja uma solução fácil, http://www.lindbergframework.org , que prover recursos para aplicações que usam JDBC, de modo a limpar o sql dos DAOs, libertando você de se preocupar com ResultSets e te livrando de ter que percorrer sempre os ResultSets para popular seus objetos como resultado de uma consulta, criando um repositório separado só para seus comandos SQL, limpando seus DAOs, gerenciamento de transações de forma fácil e transparente, via annotation, injeção simples de dependências, e muito mais. Confira em http://www.lindbergframework.org
- Você é mais um se perguntando como fazer para manter o estado de um managedbean entre páginas diferentes ou na mesma página sem usar escopo de session nem de request usando spring + jsf? Então leia esse post e conheça o 'myview' http://lindbergframework.blogspot.com/2012/02/como-manter-o-estado-de-um-managedbean.html |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/03/2012 17:36:11
|
knik
JavaTeenager
![[Avatar]](/images/avatar/ebeb300882677f350ea818c8f333f5b9.jpg)
Membro desde: 03/04/2006 19:16:59
Mensagens: 192
Offline
|
Excelente lindberg713
Descuple ressuscitar o post, mas assim como eu, outros podem precisar disto.
No meu caso, eu uso primefaces (é idêntico ao post do lindberg713):
Mas vejam que usei <p:ajax> com um listener. O listener ficou assim:
... e é claro, sobrescrevendo os metodos equals e hashCode da classe de dominio - basta acrescentar o código abaixo (no meu caso Uf):
Assim funciona melhor do que as outras abordagens mostradas neste post, pelo menos com primefaces.
Fui...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/03/2012 18:04:50
|
lindberg713
JavaChild
![[Avatar]](/images/avatar/e9aa53dfacbc30e3e4a75cffcdcc0755.png)
Membro desde: 21/03/2009 12:53:35
Mensagens: 127
Offline
|
knik wrote:Excelente lindberg713
Descuple ressuscitar o post, mas assim como eu, outros podem precisar disto.
No meu caso, eu uso primefaces (é idêntico ao post do lindberg713):
Mas vejam que usei <p:ajax> com um listener. O listener ficou assim:
... e é claro, sobrescrevendo os metodos equals e hashCode da classe de dominio - basta acrescentar o código abaixo (no meu caso Uf):
Assim funciona melhor do que as outras abordagens mostradas neste post, pelo menos com primefaces.
Fui...
Amigo, não considero essa sua abordagem melhor do que as outras. Veja que a ideia que passei aqui é que seja transparente, ou seja, você define seu selectOneMenu , define seus itens, define qual é o value dele (onde o valor selecionado será setado), e pronto só isso. O converter faz o resto para você sempre do mesmo jeito e para todos os casos, atributos e selectOneMenus que você tenha.
Usando a sua abordagem, você sempre terá que criar esse método listener para cada atributo e caso separadamente. Visto que você vai ter que obter o valor correto do map de atributos, fazer o cast e setar no local correto dentro do seu managedbean. Eu não acho essa abordagem uma boa escolha. E te digo mais, isso que você fez é redundante pois nesse trecho de código que vc postou do selectOneMenu usando o converter que eu postei anteriormente + o atributo items, quando o jsf invocar o seu metodo listener manterPessoasBean.setarUf o jsf já teria setado o valor selecionado na combo corretamente no atributo correspondente definido no value pois a chamada ao método do listener será feita na fase de 4 do jsf (Update Model Values) e depois disso só entao o seu listerner ou action será chamado na fase 5 (Invoke Application). Então você vai ta fazendo algo redundante e que ja ta sendo feito automaticamente e pra todos os casos bastando apenas usar o converter e o atributo extra 'items'.
|
Abraço,
Victor Lindberg
- Seu projeto usa JDBC? Veja uma solução fácil, http://www.lindbergframework.org , que prover recursos para aplicações que usam JDBC, de modo a limpar o sql dos DAOs, libertando você de se preocupar com ResultSets e te livrando de ter que percorrer sempre os ResultSets para popular seus objetos como resultado de uma consulta, criando um repositório separado só para seus comandos SQL, limpando seus DAOs, gerenciamento de transações de forma fácil e transparente, via annotation, injeção simples de dependências, e muito mais. Confira em http://www.lindbergframework.org
- Você é mais um se perguntando como fazer para manter o estado de um managedbean entre páginas diferentes ou na mesma página sem usar escopo de session nem de request usando spring + jsf? Então leia esse post e conheça o 'myview' http://lindbergframework.blogspot.com/2012/02/como-manter-o-estado-de-um-managedbean.html |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/04/2012 18:46:54
|
knik
JavaTeenager
![[Avatar]](/images/avatar/ebeb300882677f350ea818c8f333f5b9.jpg)
Membro desde: 03/04/2006 19:16:59
Mensagens: 192
Offline
|
ooops foi mal lindberg713.
Você tem a inteira razão, eu me esqueci de dizer que estou usando duas combos. Entao precisa sim do listener, para setar a segunda combo com as cidades da uf selecionada, no mais você tem razao, usando apenas uma combo o listener é totalmente dispensável.
Parabéns pela sua idéia e obrigado.
This message was edited 1 time. Last update was at 02/04/2012 19:56:44
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/04/2012 23:50:00
|
lindberg713
JavaChild
![[Avatar]](/images/avatar/e9aa53dfacbc30e3e4a75cffcdcc0755.png)
Membro desde: 21/03/2009 12:53:35
Mensagens: 127
Offline
|
Em casos como este onde se precisa efetuar uma ação em função de um item selecionado na combo, como por exemplo listar os estados em uma combo em função de um pais selecionado em outra combo, claro que é necessário um actionlistener ou um simples action. Mas uma coisa nao tem nada haver com a outra. A solução tratada aqui é para se obter setando na value da combo o item selecionado diretamente sem a necessidade de se criar converters especificos para isto.
Mas entendi o que você quis dizer. So quis deixar claro que o listener nao tem nada haver com a solução discutida aqui. Mas sempre é bom receber os feedbacks. Estamos todos aqui é pra isso mesmo, pra discutir e unir forças em prol de um senso comum.
Abraço.
|
Abraço,
Victor Lindberg
- Seu projeto usa JDBC? Veja uma solução fácil, http://www.lindbergframework.org , que prover recursos para aplicações que usam JDBC, de modo a limpar o sql dos DAOs, libertando você de se preocupar com ResultSets e te livrando de ter que percorrer sempre os ResultSets para popular seus objetos como resultado de uma consulta, criando um repositório separado só para seus comandos SQL, limpando seus DAOs, gerenciamento de transações de forma fácil e transparente, via annotation, injeção simples de dependências, e muito mais. Confira em http://www.lindbergframework.org
- Você é mais um se perguntando como fazer para manter o estado de um managedbean entre páginas diferentes ou na mesma página sem usar escopo de session nem de request usando spring + jsf? Então leia esse post e conheça o 'myview' http://lindbergframework.blogspot.com/2012/02/como-manter-o-estado-de-um-managedbean.html |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/04/2012 01:36:28
|
Shoknes
HelloWorld
![[Avatar]](/images/avatar/8f9fe0c29e04c01f6dab3697ae562912.jpg)
Membro desde: 05/04/2012 00:12:43
Mensagens: 12
Localização: Pimenta Bueno
Offline
|
Cara, vi isso no Blog do Rafael Pontes http://www.rponte.com.br/2008/07/26/entity-converters-pra-da-e-vender/
Eu encontrei agora e achei interessante, ainda não implementei mas é semelhante a solução já apresentada aqui, com mais um exemplo e considerações.
o que acham? é assim mesmo ou já tem outra forma, biblioteca, etc...
obg,
|
Um dia um homem falou: "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer" (Aristoteles).
Com isso eu diria: "Não há nada que eu não saíba fazer que não possa aprender" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/04/2012 01:58:49
|
Shoknes
HelloWorld
![[Avatar]](/images/avatar/8f9fe0c29e04c01f6dab3697ae562912.jpg)
Membro desde: 05/04/2012 00:12:43
Mensagens: 12
Localização: Pimenta Bueno
Offline
|
O lindberg713 , só faltou uma coisa a dizer, tem que mapear esse conveter num xml?
This message was edited 1 time. Last update was at 05/04/2012 01:59:26
|
Um dia um homem falou: "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer" (Aristoteles).
Com isso eu diria: "Não há nada que eu não saíba fazer que não possa aprender" |
|
|
 |
|
|