Boa noite pessoal!
Estou com a seguinte dúvida estou tentando chamar meu método no ComandButton, mas este método recebe um paramêtro e esta dando erro!
" action="{moedaBean.calcular()}":Method not found:"
Alguém sabe me dizer o que esta ocorrendo?
Segue método calcular
public String calcular(Cotacao cotacao) {
switch (moeda.getCodListaDe()) {
case 1:
conversaoDolar(cotacao);
break;
case 2:
conversaoDolarCanadense();
break;
case 3:
conversaoEuro();
break;
case 0:
System.out.println("ERRO");
break;
}
return null;
}
OBS: Este V.O Cotacao vem preenchido da pagina anterior.
vamos ver… esta sintaxe me parece incorreta:
action="{moedaBean.calcular()}
Caso não seja isso, verifique se o seu bean está anotado com o @ManagedBean e se vc está chamando ele corretamente.
Caso não descubra poste o código que chama este método.
Obrigado pelo retorno!
Esta sintaxe estava usando quando eu não estava passando parâmetro e funcionava perfeitamente! Como agora necessito deste parâmetro não funciona! Acredito que tenha outra forma de chamar quando há algum parâmetro …
Segue MoedaBean
package br.com.conversormoeda.service.moeda.bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import com.sun.xml.internal.bind.v2.TODO;
import br.com.conversormoeda.model.vo.Cotacao;
import br.com.conversormoeda.model.vo.Moeda;
import br.com.conversormoeda.service.MoedaServiceImpl;
@ManagedBean(name="moedaBean")
@SessionScoped
public class MoedaBean {
//Instânciando Classes Moeda e Cotacao
private Moeda moeda = new Moeda();
private Cotacao cotacao = new Cotacao();
//Instânciando class ServiceImpl
@ManagedProperty(value="#{moedaServiceImpl}")
private MoedaServiceImpl moedaServiceImpl = null;
//Construtor Default
public MoedaBean(){
}
//Método para listarMoedas
public void listarPossiveisMoedas(){
moeda.setListaMoeda(this.getMoedaServiceImpl().listarPossiveisMoedas());
}
//Método para calcular Conversoes
public String calcular(Cotacao cotacao) {
switch (moeda.getCodListaDe()) {
case 1:
conversaoDolar(cotacao);
break;
case 2:
conversaoDolarCanadense();
break;
case 3:
conversaoEuro();
break;
case 0:
System.out.println("ERRO");
break;
}
return null;
}
//Método para volar para a página de cotacao
public String voltar(){
return "Cotacao";
}
//Método para converter para DOLAR
public void conversaoDolar(Cotacao cotacao){
if (moeda.getCodListaPara() == 2) {
moeda.setConversaoDolar(Cotacao.getReal()/cotacao.getDolarAmericano());
}else if (moeda.getCodListaPara() == 3) {
moeda.setConversaoDolar(Cotacao.getReal()/cotacao.getDolarCanadense());
}else if (moeda.getCodListaPara() == 4) {
moeda.setConversaoDolar(Cotacao.getReal()/cotacao.getEuro());
}
}
//Método para converter para DOLARCANADENSE
public void conversaoDolarCanadense(){
if (moeda.getCodListaPara() == 1) {
}else if (moeda.getCodListaPara() == 3) {
}else if (moeda.getCodListaPara() == 4) {
}
}
//Método para converter para EURO
public void conversaoEuro(){
if (moeda.getCodListaPara() == 1) {
}else if (moeda.getCodListaPara() == 2) {
}else if (moeda.getCodListaPara() == 4) {
}
}
/*
* Getters e Setters
*/
public Moeda getMoeda() {
return moeda;
}
public void setMoeda(Moeda moeda) {
this.moeda = moeda;
}
public MoedaServiceImpl getMoedaServiceImpl() {
return moedaServiceImpl;
}
public void setMoedaServiceImpl(MoedaServiceImpl moedaServiceImpl) {
this.moedaServiceImpl = moedaServiceImpl;
}
public Cotacao getCotacao() {
return cotacao;
}
public void setCotacao(Cotacao cotacao) {
this.cotacao = cotacao;
}
}
Ao invés de pegar um parâmetro eu peguei o Bean preenchido em sessão! Ficou bem mais simples
Encontrei a solução aqui:
Olha o que eu fiz:
//Pegando a sessão do Bean
@ManagedProperty(value="#{cotacaoBean}")
private CotacaoBean cotacaoBean;
Pegando o valor preenchido:
//peguei o valor preenchido através do "Get" --> cotacaoBean.getCotacao().getDolarAmericano()
public void conversaoDolar(){
if (moeda.getCodListaPara() == 2) {
moeda.setConversaoDolar(Cotacao.getReal()/cotacaoBean.getCotacao().getDolarAmericano());
}
Chamando no .xhtml… sem passa parâmetro nem nada!!!