JSF - chamando 2 metodos pelo commandButton

Pessoal, no action do commandButton (JSF) tem como definir para executar 2 metodos.

por exemplo:
metodo1 e metodo2

hj esta ssim:
action="#{synchManager.metodo1}"

preciso algo como:
action="#{synchManager.metodo1}, #{synchManager.metodo2}"

Tem como??

Agradeço desde já!

Creio que não.

Pq não método1 chamar método2?

Ou então cria um outro método,que execute metodo1 e depois metodo2

Não seria melhor você criar um método “fachada” no Managed Bean?

void metodoFachada() { metodo1(); metodo2(); }

[quote=raf4ever]Creio que não.

Pq não método1 chamar método2?

Ou então cria um outro método,que execute metodo1 e depois metodo2[/quote]

No momento um metodo chama outro, mais preciso trocar isso. O motivo: no metodo 1 faço um persist numa tabela (mais o commit no banco é só qdo o metodo finaliza), no metodo 2 dependendo de algumas verificações tenho q fazer um merge nesse resgistro, porém o metodo 1 ainda não foi finalizado e o merge não rola, justamente pq “n acha” o registro q o metodo 1 persistiu. Não sei se fui clara . rs . , mais com esse cenario vc pode indicar alguma solução??

Grata!

Você está usando JPA? Hibernate Core? JDBC?

Estou usando JPA.

Faça um flush após o insert

Olá Vagner!

Já fiz , mesmo assim não dá certo.

A chave de sua entidade é gerada no banco ou vc gera na mão?

Será que isso não resolve?

<h:commandButton actionListener="#{bean.metodoAserChamadoPrimeiro}" action="#{bean.segundoMetodo}" value="" />

[code]
@MenagedBean(name=“bean”)
public class Bean{

public void metodoAserChamadoPrimeiro(ActionEvent event){

//algum código aqui dentro

}

public void segundoMetodo(){
//algum código aqui dentro

}

}[/code]

1 curtida

Se puder mandar o código-fonte de seu managed bean vai facilitar muito nossa tarefa de te ajudar :wink:

Reabrindo essa discussão, estou precisando fazer isso também.
O meu caso é o seguinte, tenho um componente facelets na tela que não conhece quem o chama. Esse componente após executar uma ação, tem que chamar uma outra ação do bean que o requisitou.

Código:

Tela que chama o componente


<h:form>
     Cadastro de fornecedor

     <xyz:meucomponente  />
</h:form>

O componente


<h:form>
     Selecionar usuario
     .......
     <h:commandButton  action="#{beanComponente.executaAcaoDoComponente}"/> <!-- APÓS FINALIZAR ESSA AÇÃO PRECISO CHAMAR A OUTRA AÇÃO DO BEAN QUE O CHAMOU -->
</h:form>

O problema maior é que tem que ser respeitada uma precedência entre as ações. A ação do componente tem que ser chamada primeiro que a ação do bean que o requisitou.

Alguém tem alguma idéia de como faço isso?