a4j + jsf

1 resposta
D

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 ?

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