Passar valor de input para o método
Eu tenho um campo para armazena a quantidade de volumes
E outro para armazenar o total a ser pago
Quero calcular isso automaticamente no on change do input voucherBeanVoucherVolumePequeno, para isso vou chamar o meu metodo findTarifaVolumesDeMao () que busca o valor da tarifa no banco e faz o calculo. Como eu passo o valor digitado no input para o meu método? E como eu retorno o resultado para o input voucherBeanVoucherTotalVolumesPequenos??
//Método que retorna o valor para tarifa de mão
public void findTarifaVolumesDeMao (Integer volumesPequenos){
try{
String sqlVolumesDeMao = "SELECT * from volumesextras where tipovolumes_id = 1 ;";
Query queryVolumesDeMao = entityManager.createNativeQuery(sqlVolumesDeMao, VolumesExtras.class);
volumesExtras = (VolumesExtras) queryVolumesDeMao.getSingleResult();
totalVolumesPequenos = (volumesExtras.getValorUnitario() * volumesPequenos );
}catch (NoResultException ne){
//
}
}
<h:outputLabel for="voucherBeanVoucherVolumePequeno" value="Volume Pequeno:"/>
<h:panelGroup>
<h:inputText id="voucherBeanVoucherVolumePequeno" value="#{voucherBean.voucher.volumePequeno} onchange="#{searchBean.findTarifaVolumesDeMao(????? )}""/>
<h:message for="voucherBeanVoucherVolumePequeno" styleClass="error"/>
</h:panelGroup>
<h:outputText/>E outro para armazenar o total a ser pago
<h:panelGroup>
<h:inputText id="voucherBeanVoucherTotalVolumesPequenos" value="#{voucherBean.voucher.totalVolumesPequenos}"/>
<h:message for="voucherBeanVoucherTotalVolumesPequenos" styleClass="error"/>
</h:panelGroup>Quero calcular isso automaticamente no on change do input voucherBeanVoucherVolumePequeno, para isso vou chamar o meu metodo findTarifaVolumesDeMao () que busca o valor da tarifa no banco e faz o calculo. Como eu passo o valor digitado no input para o meu método? E como eu retorno o resultado para o input voucherBeanVoucherTotalVolumesPequenos??
//Método que retorna o valor para tarifa de mão
public void findTarifaVolumesDeMao (Integer volumesPequenos){
try{
String sqlVolumesDeMao = "SELECT * from volumesextras where tipovolumes_id = 1 ;";
Query queryVolumesDeMao = entityManager.createNativeQuery(sqlVolumesDeMao, VolumesExtras.class);
volumesExtras = (VolumesExtras) queryVolumesDeMao.getSingleResult();
totalVolumesPequenos = (volumesExtras.getValorUnitario() * volumesPequenos );
}catch (NoResultException ne){
//
}
}
Cássia Freitas
Curtidas 0
Respostas
Wander Santos
09/09/2014
Cria uma funcao javascript que recebe o valor digitado. Faca uma requisicao passando passado seu select e no retorno da consulta pedi pra setar no campo da soma total
GOSTEI 0
Cássia Freitas
09/09/2014
Cara tentei fazer a função aqui mas tá muito bizarro, o valor dos meus inputs passam null para o javascript.
Eu digito a quantidade em voucherBeanVoucherVolumePequeno dai chama o método que faz o sql no on change e a função js faz o calculo.
Função js
Na linha da erro o valor passado é null dei um alert pra ter certeza e realmente esta passando null mas o valor está ali eu inspecionei o elemento no chrome e aparece a propriedade value do input como valor corretamente.
Eu digito a quantidade em voucherBeanVoucherVolumePequeno dai chama o método que faz o sql no on change e a função js faz o calculo.
<h:outputLabel for="voucherBeanVoucherVolumePequeno" value="Volume Pequeno:"/>
<h:panelGroup>
<p:inputText id="tarifaVPequenos" value="#{searchBean.valorVPequenos}" readonly="true"/>
<p:inputText id="voucherBeanVoucherVolumePequeno" value="#{voucherBean.voucher.volumePequeno}" onchange="#{searchBean.findTarifaVolumesDeMao()}"/>
<p:commandButton onclick="calculaTarifaVolumesPequenos()" styleClass="add-button"/>
<h:message for="voucherBeanVoucherVolumePequeno" styleClass="error"/>
</h:panelGroup>
<h:outputText/>
<h:outputLabel for="voucherBeanVoucherTotalVolumesPequenos" value="Total Volumes Pequenos:"/>
<h:panelGroup>
<h:inputText id="voucherBeanVoucherTotalVolumesPequenos" value="#{voucherBean.voucher.totalVolumesPequenos}" />
<h:message for="voucherBeanVoucherTotalVolumesPequenos" styleClass="error"/>
</h:panelGroup>Função js
var qtdVolumePequeno;
var tarifaVPequeno;
var qtdVolumeNormal;
var tarifaVNormal;
var qtdVolumeGrande;
var tarifaVGrande;
var totalVPequeno;
var totalVNormal;
var totalVGrande;
function calculaTarifaVolumesPequenos(){
alert (document.getElementById('tarifaVPequenos').value);
alert (document.getElementById("voucherBeanVoucherVolumePequeno").value);
//Pega o valor da tarifa
tarifaVPequeno = document.getElementById("tarifaVPequenos").value;
//Pega a quantidade de volumes
qtdVolumePequeno = document.getElementById("voucherBeanVoucherVolumePequeno").value;
//Faz o calculo do total
totalVPequeno = (qtdVolumePequeno * tarifaVPequeno);
//Mostra o total no input
document.getElementById("voucherBeanVoucherTotalVolumesPequenos");
}
Na linha
tarifaVPequeno = document.getElementById("tarifaVPequenos").value;GOSTEI 0