[JSF] Passando uma action para um componente customizável

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.

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.

Em primeiro lugar, obrigado pela resposta. Na realidade, acabei conseguindo fazer de acordo com o seguinte link:

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.

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.