Bom dia pessoal.
Estou com o seguinte problema:
Tenho um formulário muito grande e em uma dada região do mesmo, estou fazendo um cálculo envolvendo alguns campos atraves de a4jsf, com o intuito de não redesenhar a tela a cada cálculo.
Porém tudo esta funcionando perfeitamente, exceto que, a cada cálculo a tela rola para o topo da pagina, causando um certo desconforto visual.
Como posso fazer para recalcular os campos através do ajax sem rolar a tela ?
a4j + jsf
D
1 Resposta
D
Desculpe.
Sem o codigo fica dificil de ajudar, né ?
No JSP
<t:outputText value="Vlr. Taxa TAR (+)" styleClass="label" />
<t:inputText id="tarQtd" value="#{ReservaMB.obj.tarQtd}" styleClass="textField" size="2" onblur="submit()" valueChangeListener="#{ReservaMB.refreshQtdTar}" >
<a4j:support event="onblur" reRender="subTotalTar" />
</t:inputText>
<t:inputText value="#{ReservaMB.obj.tarPessoas}" styleClass="textField" size="2" />
<t:inputText id="tarUnit" value="#{ReservaMB.obj.tarUnit}" styleClass="textField" size="10" onblur="submit()" valueChangeListener="#{ReservaMB.refreshUnitTar}" >
<a4j:support event="onblur" reRender="subTotalTar" />
<f:converter converterId="MyBigDecimalConverter" />
</t:inputText>
<t:inputText id="subTotalTar" value="#{ReservaMB.subTotalTar}" styleClass="textField" size="10" readonly="true" >
<f:converter converterId="MyBigDecimalConverter" />
</t:inputText>
No Managed Bean
public void refreshQtdTar(ValueChangeEvent evt) {
Integer qtd = (Integer) evt.getNewValue();
this.getObj().setTarQtd(qtd);
}
public void refreshUnitTar(ValueChangeEvent evt) {
BigDecimal unit = (BigDecimal) evt.getNewValue();
this.getObj().setTarUnit(unit);
}
public BigDecimal getSubTotalTar() {
try {
return this.getObj().getTarUnit().multiply(BigDecimal.valueOf(this.getObj().getTarQtd()));
} catch(NullPointerException e) {
return new BigDecimal(0.00);
}
}
Criado 6 de setembro de 2008
Ultima resposta 6 de set. de 2008
Respostas 1
Participantes 1