| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/10/2010 15:20:49
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Pessoal,
Pela primeira vez estou trabalhando com a criação de um componente customizado em JSF, mas estou passando por um problema: como passar para o componente uma action a ser executada?
Exemplo: <bnt:test action="#{clienteM.salvar}" value="Salvar" />
Não sei como faço para que o componente "entenda" a action. Alguém sabe onde posso encontrar algo do tipo? Obrigado a todos.
|
http://blog.brunozambiazi.com
- |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/10/2010 16:42:20
|
dev.rafael
Virtual Machine Man
![[Avatar]](/images/avatar/0cba576cd16d0f399c78c557b4899a58.png)
Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline
|
Se vc estiver usando JSF2 basta declarar o atributo action da taglib do facelets. A especificação diz q alguns atributos como action, var, value tem um significado especial e são tratados diferentemente pelo Facelets. Assim, se o seu custom componente possui um atributo chamado action o próprio Facelets vai "extrair" a EL e chamar o método setActionExpression do seu componente. P/ disparar o evento vc precisa primeiro checar se ele foi clicado. Isso geralmente é feito adicionando-se o atributo name no input gerado. Se vc concluir q o command foi disparado, então vc chama o método queueEvent.
PS.: é importante q seu componente extenda de UICommand ou algum subclasse.
|
"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/10/2010 17:45:10
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Em primeiro lugar, obrigado pela resposta. Na realidade, acabei conseguindo fazer de acordo com o seguinte link:
http://www.javakaffee.de/blog/2006/12/11/how-to-add-a-new-attribute-to-an-existing-jsf-component-using-facelets/
|
http://blog.brunozambiazi.com
- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/10/2010 17:51:40
|
dev.rafael
Virtual Machine Man
![[Avatar]](/images/avatar/0cba576cd16d0f399c78c557b4899a58.png)
Membro desde: 17/09/2007 01:35:27
Mensagens: 631
Offline
|
Estou feliz q tenha conseguido mas:
1 - MethodBinding foi descontinuada em favor de MethodExpression;
2 - O modelo de getter e setter demonstrado nesse artigo é custoso em termos de memória consumida. JSF2 oferece um meio mais sofisticado p/ armazenar atributos de um UIComponente;
3 - Gerenciamento de estado com saveState e restoreState foi descontinuado.
|
"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/10/2010 17:56:53
|
bruno_cobra
JavaTeenager
Membro desde: 08/04/2007 23:59:14
Mensagens: 194
Localização: Lajeado, RS
Offline
|
Obrigado pelas informações.
Na realidade, consegui fazer baseado naquele link, não segui tudo à risca (apenas adaptei a minha necessidade).
Sobre o que dissestes:
1 - Estou usando MethodExpression;
2 - Não posso utilizar JSF 2 neste projeto.
3 - Não sabia disso, mas vou dar uma olhada para ver o que posso melhorar.
Obrigado pelas respostas.
|
http://blog.brunozambiazi.com
- |
|
|
 |
|
|