Olá pessoal, help me please!
Tenho um formulário com os campos:
Valor, Desconto, e Valor Pago(que recebe valor - desconto)
utilizo ajax pra chamar o metodo que faz esse calculo e atualizar o campo Valor Pago
[code] <f:ajax event=“blur” listener="#{hospedagemMB.totalPago}" render=“pnPagamento” >
<p:inputText value="#{hospedagemMB.movCheckOut.desconto}" ></p:inputText>
</f:ajax>
<p:inputText size="8" value="#{hospedagemMB.movCheckOut.valorPago}"
[/code]
Até ai tudo bem funciona direitinho … o problema está quando utilizo um javascript pra formatar o campo e um converter para gravar os campos double, a variável desconto
chega no metodo zerada.
segue abaixo o exemplo usando java script e o converter:
<p:inputText size="8" value="#{hospedagemMB.movCheckOut.total}">
<f:converter converterId="doubleConverter"></f:converter>
</p:inputText>
<f:ajax event="blur" listener="#{hospedagemMB.totalPago}" render="pnPagamento" >
<p:inputText value="#{hospedagemMB.movCheckOut.desconto}" onkeypress="return(MascaraMoeda(this,'.',',',event))" >
<f:converter converterId="doubleConverter"></f:converter>
</p:inputText>
</f:ajax>
<p:inputText size="8" value="#{hospedagemMB.movCheckOut.valorPago}" >
<f:converter converterId="doubleConverter"></f:converter>
</p:inputText>
O Converter:
public class DoubleConverter implements Converter{
public Object getAsObject(FacesContext arg0, UIComponent arg1, String valor) throws ConverterException {
if(valor == null || valor.toString().trim().equals("")){
return 0.0d;
} else {
valor = valor.replaceAll(Pattern.quote("."), "");
valor = valor.replaceAll(Pattern.quote(","), ".");
Double a = Double.valueOf(valor);
return a;
}
}
public String getAsString(FacesContext arg0, UIComponent arg1, Object valor) throws ConverterException {
if(valor == null || valor.toString().trim().equals("")){
return "0,00";
} else {
DecimalFormat df = new DecimalFormat("###,##0.00");
df.setDecimalFormatSymbols( new DecimalFormatSymbols( new Locale( "PT", "BR" ) ) );
return df.format( valor );
}
}
}
Creio que seja algo relacionado com e ciclo de vida do jsf, já que se eu colocar um botao ao inves do ajax funciona normalmente