É possivel passar eventos com parametros para componentes compostos em jsf?

É possivel passar eventos com parametros para componentes compostos em jsf?

por exemplo tenho meu metodo

public void teste(Object texto) { ... }

E meu componente composto com o seguinte atributo:

<cc:attribute name="action" method-signature="java.lang.String action()"/>

tem alguma coisa que possa fazer isso funcionar? tipo:

<cc:attribute name="action" method-signature="java.lang.String action(Object o)"/>

Cara, não entendi o que vc quer fazer… poderia exemplificar de outro modo?

certo vamos la:

tenho um componente composto chamado botão:

[code]<?xml version='1.0' encoding='ISO-8859-1' ?>

<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="action" method-signature="java.lang.String action()"/>
<cc:attribute name="render" default="@form"/>
</cc:interface>

<!-- IMPLEMENTATION -->
<cc:implementation>
        <a4j:commandButton value="Botao" action="#{cc.attrs.action}" render="#{cc.attrs.render}" />
</cc:implementation>
[/code]

tenho no meu managedBean o seguinte metodo:

public void teste() { ... //faz algo aqui }

e chamo esse componente na minha pagina jsf:

<util:botao action=#{managedBean.teste}/>

Assim ele funciona perfeitamente, agora queria saber se tem como esse metodo teste ter parametros tipo:

public void teste(Object o) { ... //faz algo aqui }

e na minha pagina:

<util:botao action=#{managedBean.teste(alguma coisa)}/>

e no meu componente composto:

[code]<?xml version='1.0' encoding='ISO-8859-1' ?>

<!-- INTERFACE -->
<cc:interface>
<cc:attribute name="action" method-signature="java.lang.String action(Object o)"/>
<cc:attribute name="render" default="@form"/>
</cc:interface>

<!-- IMPLEMENTATION -->
<cc:implementation>
        <a4j:commandButton value="Botao" action="#{cc.attrs.action(o)}" render="#{cc.attrs.render}" />
</cc:implementation>
[/code]

sei la algo desse tipo ±?

O que vc consegue pegar como parametro, seria o prório evento, ai chamaria um actionListener.

Mas como vc quer é tipo atribuir o valor de um id, qdo algum evento for acionado, pode fazer assim:

  • criar o atributo no MB que receberá este parâmetro;
  • no evento que necessitar vc chama o método que deverá ser executado action="#{seuMB.metodo}"
  • no seu método, vc lê o atributo.

espero que tenha conseguido exigir.

Então o problema é exatamente este de receber este parametro porque todos o atributo de componentes do campo tipo value ja estão passando parametros então queria um metodo para passar outro parametro alem deste.

Tem alguns modos:
<f:param />
<f:setTargetProperty> // ou algo assim

No primeiro, vc terá que pegar o parâmetro pelo FacesContext…
No segundo modo, vc já atribui direto o parâmetro, se nao me enganho existe a propriedade target que será o nome do atributo no seu MB e a propriedade value (valor que será atribuido).

Dê uma olhada, acho que resolverá seu problema.

Aí esta outro problema quando eu usava o a4j:support do jsf1.2 eu utilizava f:setTargetProperty e funcionava perfeitamente agora no jsf 2.0 como uso o a4j:ajax o f:setPropertyActionListener não funciona pq o tipo do componente a4j:ajax não da suporte para ele e o f:param tbm não funciona, por isso mesmo que queria um jeito de passar um metodo com parametros, mas valeu pela ajuda.

Cara, já tentou o <f:ajax> nativo do JSf2?

Acho que pode ter algo… já o usei… mas nao lembro extamente pra qual situaçao… dê uma olhada de repente rs

Então eu ja tinha tentando algo com ele mas tinha dado algum erro não lembro qual acho q por misturar o f:ajax com componentes richfaces , mas vou tentar denovo alguma coisa vai q da certo, valeu