JSF 2.0 - Como pegar objeto inteiro no selectOneMenu  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
rafabh3
Thread.start()
[Avatar]

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!
alissonvla
GUJ Master

Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline

cara,

vc tem que criar um custom converter.

t+
FernandoFranzini
GUJ Master
[Avatar]

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
[Email] [WWW]
leonardobhbr
Virtual Machine Man
[Avatar]

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
rafabh3
Thread.start()
[Avatar]

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!
ederfreitas
JavaTeenager
[Avatar]

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


FernandoFranzini
GUJ Master
[Avatar]

Membro desde: 24/04/2009 12:58:16
Mensagens: 1541
Offline

Esta ai sem conversor:

Fernando Franzini
[Email] [WWW]
leonardobhbr
Virtual Machine Man
[Avatar]

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
lindberg713
JavaChild
[Avatar]

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
knik
JavaTeenager
[Avatar]

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...
lindberg713
JavaChild
[Avatar]

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
knik
JavaTeenager
[Avatar]

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

lindberg713
JavaChild
[Avatar]

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
Shoknes
HelloWorld
[Avatar]

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"
[WWW]
Shoknes
HelloWorld
[Avatar]

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"
[WWW]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team