JSF - Como setar action de um button através do mbean

Opa :smiley:

Alguém sabe me dizer como que eu faço pra setar a action de um command button através do MBean?

Eu to fazendo o seguinte:

MethodBinding mb = null;
Class[] parametros = { Class.forName("javax.faces.event.ActionEvent") };
mb = FacesContext.getCurrentInstance().getApplication().createMethodBinding("baixarDivergenciasDelegate.baixarDivergencias", parametros);
divergenciasMBean.getBtBxDivergencias().setAction(mb);

Mas isso não está funcionando. Estou recebendo a exceção:

Atualmente utilizo JSF1.1 e Java 1.4.

Alguém pode me dar uma força?

Não entendi direito a sua duvida.

A tag h:commandButton possui uma action e eu queria seta-la dinamicamente…como fazer isso?

Mapeia ela em uma propriedade do mbean.

<h:comandButton action="#{mbean.propriedade}" />

Isso seria mapear estaticamente…

eu quero mapea-la dinamicamente onde vai ser um método do meu MBean q vai depender de N coisas que irão acontecer antes pra poder decidir ql será a ação desse botão

Não dá pra você colocar a action do botão num método de um managed bean estaticamente? Daí esse método só irá delegar qual método deve executar naquele momento.

Sabe? Tenta fazer desse jeito. Acho que setar a action dinamicamente é violar o conceito de MVC, fazendo o C conhecer detalhes, que não deveria conhecer, do V.

Puts…acho que é verdade sobre a violação, mas ai vou quebrar o conceito do Delegate -> Command - > EJB pq vou começar a dar new em varios Delegates e não se issso é legal…

De repente, é melhor eu colocar o código no próprio delegate…

Não sei…

Mais alguém? :smiley:

tenta:

MethodBinding mb = null; mb = FacesContext.getCurrentInstance().getApplication().createMethodBinding("#{baixarDivergenciasDelegate.baixarDivergencias}", null); divergenciasMBean.getBtBxDivergencias().setAction(mb);

ou:

MethodBinding mb = null; Class[] parametros = { Class.forName("javax.faces.event.ActionEvent") }; mb = FacesContext.getCurrentInstance().getApplication().createMethodBinding("#{baixarDivergenciasDelegate.baixarDivergencias}", parametros); divergenciasMBean.getBtBxDivergencias().setActionListener(mb);