Obter id(no Bean) de um componente JSF  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Galera, como eu faço para obter o id de um componente JSF?
Eu tenho um commandButton que no action chama um metodo la do meu bean...
no bean eu quero pegar o id do botão que submeteu.. como faço isso?

This message was edited 3 times. Last update was at 29/02/2008 13:18:45


Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
Mauricio de Mello
Java Ninja

Membro desde: 30/01/2007 14:49:22
Mensagens: 296
Localização: Florianópolis
Offline

Da uma olhada.

felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

O q q tem? Isso ae é só codigo jsf e naum tem nada de mais nele...
Acho que naum expliquei direito, olha só:
eu tenho um




Quando esse metodo calcula for chamado eu quero saber como eu obtenho o id "seiLaoq" do componente JSF que o chamou, entendeu? Isso no lado do java ja no bean, e naum nas tags jsf...
A ideia é toda vez que um metodo no bean for chamado, quero saber o id de quem o chamou, bom é isso, alguem tem alguma ideia?

This message was edited 2 times. Last update was at 26/02/2008 18:06:20


Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
rafagil
JavaGuru
[Avatar]

Membro desde: 01/12/2006 01:05:30
Mensagens: 204
Localização: São Bernardo do Campo - SP
Offline

Voce pode usar parametros:



E Recuperar no Bean Depois: (não sei se o nome dos metodos estão todos corretos)

This message was edited 1 time. Last update was at 26/02/2008 18:50:01


Sun Certified Java Programmer 5.0

Soluções inteligentes em TI: http://www.elgitech.com.br
[WWW]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Fala cara, obrigado pela ajuda, mas eu fiz isso que tu falaste e ele imprimiu null...
esse getRequestParameterMap().get("id") num seria aplicavel se eu tivesse na minha url algo assim:

http://localhost:8080/projeto/faces/index.jsp?id=isso

Pq para o commandbutton ele ta retonando null, vc conseguiu desse modo?

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
rafagil
JavaGuru
[Avatar]

Membro desde: 01/12/2006 01:05:30
Mensagens: 204
Localização: São Bernardo do Campo - SP
Offline

Verdade, andei pesquisando e verifiquei que o <h:commandButton> não suporta parametros

se vc usar commandLink no lugar, o param vai funcionar.

Ví em um fórum que se vc quiser usar varios botões para um mesmo método, deveria colocá-los em um dataTable e tratar os eventos da mesma.

Sun Certified Java Programmer 5.0

Soluções inteligentes em TI: http://www.elgitech.com.br
[WWW]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Fala cara, encontrei uma maneira mais fácil, fazer binding do commandButton para um HtmlCommandButton ae no bean eu tenho todos os atributos da minha tag, muito mais fácil, mas obrigado pela ajuda,
Samuel Félix

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
rafagil
JavaGuru
[Avatar]

Membro desde: 01/12/2006 01:05:30
Mensagens: 204
Localização: São Bernardo do Campo - SP
Offline

Sim, mas vc não pode fazer binding de dois botões para o mesmo atributo do backingBean, terá que fazer vários bindings pra vários atributos diferentes, e desssa forma ainda não saberia qual foi o botão clicado (ou então entendi errado o seu problema).

Sun Certified Java Programmer 5.0

Soluções inteligentes em TI: http://www.elgitech.com.br
[WWW]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Não deu certo, estás correto! Tentei fazer binding para vários botões, no entanto não funcionou =(
agora voltando a sua sugestão, em utilizar commandLink, eu estou tendo problemas, olha só:
Eu to fazendo um forEach do JSTL para uma Collection q tem os meus albuns la...
eu to precisando obter esse id pq dentre outras coisas, eu preciso remover o album...
para isso usei o forEach para listar todos os albuns persistidos e depois queria pegar o id do que foi clicado...
eu achava que tinha resolvido com binding pq tinha testado só pra um =P
Mas o problema que existe no código a seguir é que ele não aceita expressões ${a.id}
ae eu não tenho como setar o id do componente, vc conseguiu entender o meu problema?
Pois é, ja tentei de tudo, varios componentes, nenhum deles aceita expressões, e...
eu não tenho como passar o id se não for usar ela, entendes?

Código que naum funciona


Exceção


Sabes de algo que eu possa fazer?
Obrigado

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
rafagil
JavaGuru
[Avatar]

Membro desde: 01/12/2006 01:05:30
Mensagens: 204
Localização: São Bernardo do Campo - SP
Offline

Se vc estiver usando o JSF 1.2, pode colocar #{a.id} que eu acho q funciona, por causa da Unified EL.

Eu tive um problema parecido com o seu já, pra montar um menu, pra solucionar mais facilmente, eu gerei tudo dentro do managedBean, e depois fiz o binding em um panelGroup.

Outra opção, que acho q no seu caso será mais fácil, é usar o componente <a4j:repeater>, que funciona igual o foreach, mas usando Tags JSF

tenta fazer com o a4j, que acho q vai funcionar.

Sun Certified Java Programmer 5.0

Soluções inteligentes em TI: http://www.elgitech.com.br
[WWW]
felixcomputer
JavaTeenager
[Avatar]

Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline

Fala cara, um noticia boa e uma ruim...
a boa é q fazer expressão com #{a.asdf} funcionou.. a ruim é q de novo o param é ta null...
conheces algum componente que possa funcionar? Se naum semana que vem tento usar o <a4j:repeater> que vc falou
bom, obrigado pela sua ajuda, to aprendendo bastante

Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com
[Email] [WWW] [MSN]
rafagil
JavaGuru
[Avatar]

Membro desde: 01/12/2006 01:05:30
Mensagens: 204
Localização: São Bernardo do Campo - SP
Offline

Se está usando o commandLink, não pode chegar null, tem que chegar o parametro.

Tenta imprimir o Id e vê se ele está imprimindo direito, e verifique se o name ta igual o que vc está pegando.

Com param tem q funcionar sim, é o metodo que eu uso nas minhas tabelas aki. Dá uma olhada aí.

Eu acho melhor colocar o repeater mesmo, pq misturar JSF com JSTL não fica mto legal, e tem mta coisa q não funciona direito.

Flws.

Sun Certified Java Programmer 5.0

Soluções inteligentes em TI: http://www.elgitech.com.br
[WWW]
rafagil
JavaGuru
[Avatar]

Membro desde: 01/12/2006 01:05:30
Mensagens: 204
Localização: São Bernardo do Campo - SP
Offline

Consegui

Finalmente fazer o que vc queria, fica aqui a dica pra outros que também estão com o mesmo "problema":

vc pode definir um listener, dessa forma:



E no managedBean:



*Lembrando q o ActionEvent eh o do JSF, não o do AWT.

Ufa, acho q finalmente conseguimos resolver, e era muito simples

Sun Certified Java Programmer 5.0

Soluções inteligentes em TI: http://www.elgitech.com.br
[WWW]
Fabio Kung
JavaEvangelist

Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline

rápido no gatilho. Não tinha lido o tópico todo e já estava respondendo...

É essa mesma a solução!

Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?


http://blog.caelum.com.br


Fabio Kung
[WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team