JSF - Problemas com campo input text e action do a4j:support

Bom dia pessoal, eu tenho o seguinte problema para resolver. Tenho uma tela em JSF onde eu mostro o preco do dia de um determinado produto. O usuário pode ir nesse campo e alterar o preço. Neste momento eu preciso chamar uma rotina em AJAX que pegue o preço anterior e o novo preço digitado pelo usuário e compare se ouve um desvio de 20% entre o preço antigo e o digitado pelo usuário. Caso aconteça o desvio de 20%, eu preciso enviar uma mensagem informando ao usuário. Tudo funciona perfeitamente, mas no retorno do método que faz a verificação Ajax o valor antigo do campo é mostrado novamente para o usuário ao inves do novo valor digitado. Eu dei uma procurada na internet e vi alguns posts dizendo que isso ocorre pq no ciclo de vida do JSF os metodos get e set sao chamados numa fase anterior à atualizacao da view e da chamada do metodo que trata do desvio. Tentei mudar o PhaseID do evento mas não adiantou. Se alguém puder me ajudar, eu agradeço. Abaixo segue o trecho de código da minha página XHTML e do meu ManagedBean que possui o metodo que trata do desvio.

<h:inputText value="#{bico.preco}" required=“true” size=“20” binding="#{precosDoDiaMB.precoRef}"
maxlength=“20” id=“precoDoDia” label="#{redeBundle[‘saaf.rede.precosdodia.list.precoDoDia’]}">
<a4j:support action="#{precosDoDiaMB.precoChanged}"
event=“onchange” reRender=“precoMessage”/>
</h:inputText>

public void precoChanged(ActionEvent event) {
String clientID = getPrecoRef().getClientId();
if (getPrecoRef().getValue() != null && getPrecoRef().getSubmittedValue() != null &&
getPrecoRef().getValue().toString().length() > 0 && getPrecoRef().getSubmittedValue().toString().length() > 0) {

  double novoPreco = Double.valueOf(getPrecoRef().getSubmittedValue().toString()).doubleValue();
  double precoAntigo = Double.valueOf(getPrecoRef().getValue().toString()).doubleValue();
  if (precosDoDiaEJB.verificaVariacaoPreco(novoPreco, precoAntigo)) {
      FacesContext.getCurrentInstance().addMessage(clientID, new FacesMessage(
FacesMessage.SEVERITY_WARN, getBundledMessage("saaf.rede.precosDoDia.msg.atingiuVariacao"), null));
  }

}
}