JSF - chamando 2 metodos pelo commandButton

11 respostas
I

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á!

11 Respostas

R

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

J

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

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

I

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

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!

J

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

I

Estou usando JPA.

V

Faça um flush após o insert

I

Olá Vagner!

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

V

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

F

Será que isso não resolve?

<h:commandButton actionListener="#{bean.metodoAserChamadoPrimeiro}" action="#{bean.segundoMetodo}" value="" />
@MenagedBean(name="bean")
public class Bean{


public void metodoAserChamadoPrimeiro(ActionEvent event){

//algum código aqui dentro
	
}


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

}


}
J

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

A

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?

Criado 11 de novembro de 2010
Ultima resposta 25 de abr. de 2012
Respostas 11
Participantes 6