Mudar valores do bean de acordo co o valor escolhido no <h:selectOneMenu/>

Olá pessoal minha dúvida é muito simples porem não consegui resposta pela busca no forun.
Seguinte, tenho um <h:selectOneMenu abaixo que está pegando os valores certinhos do meu bean, o que quero fazer é que quando o valor ‘4’ for escolhido no combo, o sistema chame o método getValidaRecebidoOK do meu controlador para setar esses novos valores.

[code] <h:selectOneMenu id=“inputStatus1” value="#{ManterRecebimento.recebimento.statusServico}" rendered="#{ManterRecebimento.recebimento.statusServico == 1}" >
<f:selectItem itemValue=“2” itemLabel=“Devolvido para Correção” />
<f:selectItem itemValue=“3” itemLabel=“Rejeitado” />
<f:selectItem itemValue=“4” itemLabel=“Recebido OK” />

                            </h:selectOneMenu>

[/code]

O método do controlador

[code] public void getValidaRecebidoOK() {
Date data = Calendario.stringToDate(Calendario.getDataAtual());
abrirConexao();
Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
fecharConexao();
if (uLtimoRecebimento.getDataRecebe() == null && servico.getRecebedev().getStatusServico().equals(“4”)) {
eDevolve = true;
eRecebe = false;
servico.getRecebedev().setDataRecebe(data);
servico.getRecebedev().setDataDevolve(null);
servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
servico.getRecebedev().setObservacoes("");

    } else {
        chamaValidadcao();
    }

}[/code]

tentei colocar o a4j: suporte dentro do combo mão não sei se está certo nem como chamar o método somente quando o valor do item escolhido for igual a 4:

[code]

<h:selectOneMenu id="inputStatus1" value="#{ManterRecebimento.recebimento.statusServico}" rendered="#{ManterRecebimento.recebimento.statusServico == 1}"   >
                                <f:selectItem itemValue="2" itemLabel="Devolvido para Correção" />
                                <f:selectItem itemValue="3" itemLabel="Rejeitado"  />
                                <f:selectItem itemValue="4" itemLabel="Recebido OK" />
                                <a4j:support event="onchange" reRender="frmCrudEditarRecebimento" action="#{ManterRecebimento.validaRecebidoOK}"  ajaxSingle="true"/>
                            </h:selectOneMenu>[/code]

Abraço e agradeço desde já as respostas

Santagoss, não coloque essa regra na view. Chama um metodo toda vez que o valor for alterado, e nesse metodo você verifica se o valor é 4, e executa o que você precisar.

Opa fabio é exatamente isso que quero fazer mas como eu faço isso em tempo real, quando selecionar o item 4 ele chamar esse método?

o que foi dito acima eh que sua action eh executada TODAS as vezes que o valor do combo mudar, e se isso nao for o caso, faca sua validacao quando submeter os dados, sua view nao deveria se preocupar com logica de negocio como explicado anteriormente.

Utilize como está fazendo, e confira no metodo se o valor ManterRecebimento.recebimento.statusServico é 4.

O <a4j:support event="onchange" reRender="frmCrudEditarRecebimento" action="#{ManterRecebimento.validaRecebidoOK}" ajaxSingle="true"/> já vai atualizar o atributo pra você no momento que ele selecionar algum item do combo.

sim fabio e balrog, eu estou fazendo a verificação no método, porem eu quero que a validação ocorra em tempo real, quando o usuário mudar para o item ele chama os método faz a verificação e a troca dos valores. Sei que não deveria fazer isso na visão mas o que ocorre é que o projeto sofreu alteração de ultima hora por isso tenho que tratar esse caso dessa forma para que não prejudique as outras validações do sistema.
bom coloquei o código como está e a verificação no método

<h:selectOneMenu id="inputStatus1" value="#{ManterRecebimento.recebimento.statusServico}" rendered="#{ManterRecebimento.recebimento.statusServico == 1}" > <f:selectItem itemValue="2" itemLabel="Devolvido para Correção" /> <f:selectItem itemValue="3" itemLabel="Rejeitado" /> <f:selectItem itemValue="4" itemLabel="Recebido OK" /> <a4j:support event="onchange" reRender="frmCrudEditarRecebimento" action="#{ManterRecebimento.validaRecebidoOK}" ajaxSingle="true"/> </h:selectOneMenu>

método :

[code]
public void getValidaRecebidoOK() {
Date data = Calendario.stringToDate(Calendario.getDataAtual());
abrirConexao();
Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
fecharConexao();
if (uLtimoRecebimento.getDataRecebe() == null && servico.getRecebedev().getStatusServico().equals(“4”)) {
eDevolve = true;
eRecebe = false;
servico.getRecebedev().setDataRecebe(data);
servico.getRecebedev().setDataDevolve(null);
servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
servico.getRecebedev().setObservacoes("");

    } else {
        chamaValidadcao();
    }

}[/code]

mas ele não encontra o método :

Caused by: javax.el.MethodNotFoundException: /internas/painelEditarRecebimento.xhtml @81,170 action="#{ManterRecebimento.validaRecebidoOK}": Method not found: RecebimentoControle@121ede3.validaRecebidoOK()

Abraço

ele nao encontra seu metodo validaRecebidoOK, simplesmente porque vc NAO possue um, vc possue getValidaRecebidoOK na sua action

Tira o get do metódo. get e set é para atributos.

Abs

tenho sim no meu RecebimentoControle tanto que uso outros métodos do crud funcionam normalmente.

Abs[/quote]
Também fiz isso renomeei mas o método para validaRecebidoOK mas o modal carrega e fecha sem mostrar nenhum erro no tomcat.

Não entendi, tem que mostrar erro? Você está disparando algum erro dentro do metodo?

[quote=fabiomazzo]Não entendi, tem que mostrar erro? Você está disparando algum erro dentro do metodo?
[/quote]
Não, ele tem que setar as datas como está no método validaRecebimentoOK e recarregar o modal com as datas atualizadas. Porem ele não está fazendo isso.
Pedi pra imprimir recebimento dentro o validaRecebimentoOK para ver se passa e mostra as datas atualizadas mas quando escolhe o ‘4’ não não voltou nada
Alguma idéia de como fazer isso ?

Poe as datas dentro de um a4j:Panel e dá um reRender nesse componente.

Como se faz isso ? o que eu quero fazer é simples, quando escolher a opção 4 no combobox ele execute o método do RecebimentoControle.
Do jeito que tinha feito parece que ele não está rederizando a tela quando mudo no combobox, tentei fazer algo simples como uma função que imprimisse algo na tela mas nem isso mostrou.

Você coloca todos os componentes que quer que sejam atualizados após a seleção do combo dentro dessas tags:

 <a4j:outputPanel id="panelQueSeraReRenderizado"></a4j:outputPanel>

Deixe o a4j:support dessa maneira:

<a4j:support event="onchange" reRender="panelQueSeraReRenderizado" action="#{ManterRecebimento.validaRecebidoOK}"  ajaxSingle="true"/>  

Ao selecionar o combo (Evento OnChange) ele irá chamar o metodo validaRecebidoOK do Bean ManterRecebimento e irá atualizar (reRenderizar) o painel “panelQueSeraReRenderizado”.

Entendeu?

Abs

[quote=fabiomazzo]Você coloca todos os componentes que quer que sejam atualizados após a seleção do combo dentro dessas tags:

 <a4j:outputPanel id="panelQueSeraReRenderizado"></a4j:outputPanel>

Deixe o a4j:support dessa maneira:

<a4j:support event="onchange" reRender="panelQueSeraReRenderizado" action="#{ManterRecebimento.validaRecebidoOK}"  ajaxSingle="true"/>  

Ao selecionar o combo (Evento OnChange) ele irá chamar o metodo validaRecebidoOK do Bean ManterRecebimento e irá atualizar (reRenderizar) o painel “panelQueSeraReRenderizado”.

Entendeu?

Abs[/quote]

Fiz exatamente como descreveu acima mas da mesma forma ele pisca o modal e fecha sem fazer nada. :frowning:

Posta todo seu JSF e o Bean inteiro para conferir.

Abs

[quote=fabiomazzo]Posta todo seu JSF e o Bean inteiro para conferir.

Abs[/quote]


Classe de controle 
public class RecebimentoControle extends CrudControle {

    private Os os;
    private Servico servico;
    private Recebimento recebimento;
    private RecebimentoDAO dao;
    private String numeroContrato;
    private int numeroASC;
    private String numeroOS;
    private int numeroServico;
    private HtmlDataTable table;
    private boolean eRecebe = false;
    private boolean eDevolve = false;

    public RecebimentoControle() {
        os = new Os();
        servico = new Servico();

        recebimento = new Recebimento();

        dao = new RecebimentoDAO();
        setDao(dao);
    }

    //Metodos get e set

    public Recebimento pegaLinhaSelecionada() {
        Recebimento recebimento1 = (Recebimento) table.getRowData();

        return recebimento1;
    }

    public void editarRecebimentos() {
        this.setServico(atualizaServico(servico.getCodigo_servico()));
        this.setRecebimento(servico.getRecebedev());

        chamaValidadcao();
    }

    public void editarRecebimento() {

        Recebimento recebimento1 = pegaLinhaSelecionada();
        this.setServico(atualizaServico(recebimento1.getFkNumServico()));

        // setRecebimento(recebimento1);
    }

    public void alterarDescricao() {
        Recebimento recebimento1 = pegaLinhaSelecionada();

        setRecebimento(recebimento1);

    }

    /**
     * Restaura uma OS padrão do controle
     * limpando os dados da mesma.
     */
    public void limparDados() {
        os = new Os();
        servico = new Servico();

        setNumeroServico(0);
        setNumeroContrato("");
        setNumeroASC(0);
        setNumeroOS("");
    }

    /**
     * Atualiza um Recebimeto selecionada pela ComboBox.
     */
    public void atualizarOsSelecionado() {
        //cria um value object, configurando apenas o id do mesmo.
        Os os1 = new Os();

        os1.setNumero_os(numeroOS);

        //através do VO, pesquisa o funcionário selecionado e configura a mesmo no controle.
        abrirConexao();
        Os osSelecionado = dao.pesquisar(numeroOS);

        //através da numero da OS, pesquisa pesquiso a ultima alteração OS.
        //   Os osDataAnterior = dao.pesquisarUltimaData(numeroOS);
        // osSelecionado.setDataRecebeAnterior(osDataAnterior.getDataRecebeAnterior());

        fecharConexao();
        this.setOs(osSelecionado);
    }

    public Servico atualizaServico(int numeroServico) {

        //através do VO, pesquisa o funcionário selecionado e configura a mesmo no controle.

        abrirConexao();
        //através da numero do Servico,  pesquiso a ultima alteração do Servico.
        Servico servicoSelecionado = dao.pesquisarServicoSelecionado(numeroServico);
        Recebimento ultimoRecebimentoDevolucao = dao.pesquisarUltimaDataRecebimentoServico(numeroServico);
        fecharConexao();
        servicoSelecionado.setRecebedev(ultimoRecebimentoDevolucao);
        return servicoSelecionado;
    }

    /**
     * Atualiza um Recebimeto do Servico selecionado pela ComboBox.
     */
    public void atualizarServicoSelecionado() {
        //cria um value object, configurando apenas o id do mesmo.
        Servico servico1 = new Servico();
        servico1.setCodigo_servico(numeroServico);

        //através do VO, pesquisa o funcionário selecionado e configura a mesmo no controle.

        abrirConexao();
        //através da numero do Servico,  pesquiso a ultima alteração do Servico.
        Servico servicoSelecionado = dao.pesquisarServicoSelecionado(numeroServico);
        Recebimento ultimoRecebimentoDevolucao = dao.pesquisarUltimaDataRecebimentoServico(numeroServico);

        servicoSelecionado.setRecebedev(ultimoRecebimentoDevolucao);

        fecharConexao();
        this.setServico(servicoSelecionado);
    }

    /**
     * Cadastra um Recebimento de um Servico no  Banco de dados;
     *
     * @void
     */
    public void inserirRecebimentoServico() {
        boolean retorno;
        boolean verificaData = verificaDatas();
        System.out.println("VERIFICADATAS---->>>>:" + verificaData);
        if (verificaData) {
            abrirConexao();

            retorno = dao.inserirRecebimentoServico(servico);
            fecharConexao();
            if (retorno) {
                this.addMessage("servico", INF_ADICIONAR_SERVICO, FacesMessage.SEVERITY_INFO, "");
                this.acao = PADRAO;
                limparDados();
            } else {
                this.addMessage("servico", ERR_RECEBER_SERVICO, FacesMessage.SEVERITY_ERROR, "");
            }
        }
    }

    /**
     * Cadastra um Recebimento de um Servico no  Banco de dados;
     *
     * @void
     */
    public void alterarDescricaoRecebimento() {
        boolean retorno;

        abrirConexao();

        retorno = dao.alterarDescricaoRecebimento(recebimento);
        fecharConexao();
        if (retorno) {
            this.addMessage("servico", INF_ADICIONAR_SERVICO, FacesMessage.SEVERITY_INFO, "");
            this.acao = PADRAO;
            limparDados();
        } else {
            this.addMessage("servico", ERR_RECEBER_SERVICO, FacesMessage.SEVERITY_ERROR, "");
        }
    }

    /**
     * Lista todas as ASC para a ComboBox
     *
     * @ListaAsc
     */
    public List<SelectItem> getListarParaComboASC() {
        abrirConexao();
        List lista = dao.listarComboASC(numeroContrato);
        fecharConexao();
        ArrayList<SelectItem> listaAsc = new ArrayList<SelectItem>();
        for (int i = 0; i < lista.size(); i++) {
            SelectItem ascCombo = new SelectItem();
            Asc e = (Asc) lista.get(i);
            ascCombo.setValue(e.getCod_asc());
            ascCombo.setLabel(e.getCod_asc() + "-" + e.getNome_sis());
            listaAsc.add(ascCombo);
        }

        return listaAsc;
    }

    /**
     * lista todos o numeros de ASC do Banco de dados que não possuem data de
     * recebimento
     *
     * @return listaOS;
     */
    public List<SelectItem> getListarParaComboOS() {
        abrirConexao();
        List lista = dao.listarComboOS(numeroASC);
        fecharConexao();
        ArrayList<SelectItem> listaOS = new ArrayList<SelectItem>();
        for (int i = 0; i < lista.size(); i++) {
            SelectItem osCombo = new SelectItem();
            Os e = (Os) lista.get(i);
            if (e.getStatus_os() == 0) {
                osCombo.setValue(e.getNumero_os());
                osCombo.setLabel(e.getNumero_os());
                listaOS.add(osCombo);
            }
        }
        return listaOS;
    }

    public List<SelectItem> getListarParaComboServico() {
        abrirConexao();
        List lista = dao.listarComboServico(numeroOS);
        fecharConexao();
        ArrayList<SelectItem> listaServico = new ArrayList<SelectItem>();
        for (int i = 0; i < lista.size(); i++) {
            SelectItem servCombo = new SelectItem();
            Servico e = (Servico) lista.get(i);

            servCombo.setValue(e.getCodigo_servico());
            servCombo.setLabel(String.valueOf(e.getCodigo_servico()));
            listaServico.add(servCombo);
        }
        return listaServico;
    }

    /**
     * Lista todos os Recebimentos do Banco de Dados.
     *
     * @return lista;
     */
    public List<Servico> getListar() {
        abrirConexao();
        List lista = dao.pesquisaRecebimentosServico(servico);
        fecharConexao();

        return lista;
    }

    /**
     * Verifica se todas as Datas
     *
     * @return retorno
     */
    public boolean verificaDatas() {
        boolean retorno = false;


        if (verificaDataRecebimentoServico() && verificaDataDeDevolucaoServico()
                && verificaDataUltimoRecebimentoServico() && verificaDataAtual()) {
            retorno = true;
        } else {
            retorno = false;
        }
        return retorno;
    }

    public boolean verificaDataRecebimentoServico() {
        boolean retorno = false;
        if (servico.getRecebedev().getDataRecebe().before(servico.getData_abertura_servico())) {
            this.addMessage("os", WARN_DATARECEBE_MENOR_ABERTURA, FacesMessage.SEVERITY_WARN, "");
            retorno = false;
        } else {

            retorno = true;
        }
        return retorno;
    }


    /* Verifica se a Data de Devolução do Servico < Data de Recebimento do Servico
     *
     * @return retorno;
     */
    public boolean verificaDataDeDevolucaoServico() {
        boolean retorno = false;

        abrirConexao();
        Recebimento agoraRecebimento = servico.getRecebedev();
        Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());


        fecharConexao();

        if (eDevolve == true && uLtimoRecebimento.getStatusServico() != null) {

            if (agoraRecebimento.getDataRecebe().equals(uLtimoRecebimento.getDataDevolve()) || agoraRecebimento.getDataRecebe().after(uLtimoRecebimento.getDataDevolve())) {

                retorno = true;
            } else {
                if (agoraRecebimento.getDataRecebe().before(uLtimoRecebimento.getDataDevolve())) {
                    this.addMessage("servico", WARN_DATADEVOLVE_MENOR_RECEBE_SERVICO, FacesMessage.SEVERITY_WARN, "");
                    retorno = false;
                } else {
                    retorno = true;
                }
            }
        } else {

            retorno = true;
        }
        return retorno;
    }

    /**
     * Verifica a se a Data de que está sendo informada < Ultima data de recebimento do Servico.
     *
     * @return retorno;
     */
    public boolean verificaDataUltimoRecebimentoServico() {
        boolean retorno = false;
        abrirConexao();
        Recebimento agoraRecebimento = servico.getRecebedev();
        Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());

        fecharConexao();


        if (eRecebe == true && agoraRecebimento.getDataDevolve().before(uLtimoRecebimento.getDataRecebe())) {
            this.addMessage("recebimento", WARN_DATARECEBE_MENOR_ULTIMO_RECEBIMENTO, FacesMessage.SEVERITY_WARN, "");
            retorno = false;

        } else {

            retorno = true;
        }
        return retorno;
    }

    /**
     * Verifica se da Data de Recebimento Servico < Data de Abertura do Servico
     *
     * @return retorno;
     */
    public boolean verificaDataRecebimento() {
        boolean retorno = false;
        if (os.getDataRecebe().before(os.getData_abertura_os())) {
            this.addMessage("servico", WARN_DATARECEBE_MENOR_ABERTURA, FacesMessage.SEVERITY_WARN, "");

            retorno = false;
        } else {

            retorno = true;
        }
        return retorno;
    }

    /**
     * Verifica se a Data de Devolução < Data de Recebimento
     *
     * @return retorno;
     */
    public boolean verificaDataDeDevolucao() {
        boolean retorno = false;
        Date data = Calendario.stringToDate(Calendario.getDataAtual());
        if (os.getDataDevolve() == null || os.getDataDevolve().equals(os.getDataRecebe())) {
            retorno = true;
        } else {
            if (os.getDataDevolve().before(os.getDataRecebe()) || os.getDataDevolve().before(data)) {
                this.addMessage("os", WARN_DATADEVOLVE_MENOR_RECEBE, FacesMessage.SEVERITY_WARN, "");
                retorno = false;

            } else {

                retorno = true;

            }
        }
        return retorno;

    }

    /**

    /**
     * Verifica a se a Data de que está sendo informada < Ultima data de recebimento da OS.
     *
     * @return retorno;
     */
    public boolean verificaDataUltimoRecebimento() {
        boolean retorno = false;
        abrirConexao();
        List lista = dao.verificaRecebimentosDaOS(os);
        fecharConexao();
        if (!lista.isEmpty()) {
            for (int i = 0; i
                    < lista.size(); i++) {
                Os os1 = (Os) lista.get(i);
                if (os.getDataRecebe().before(os1.getDataRecebe())) {
                    this.addMessage("recebimento", WARN_DATARECEBE_MENOR_ULTIMO_RECEBIMENTO, FacesMessage.SEVERITY_WARN, "");
                    retorno = false;
                    break;
                } else {
                    retorno = true;
                }
            }
        } else {
            retorno = true;
        }
        return retorno;
    }

    public boolean verificaDataAtual() {
        boolean retorno = false;
        Date data = Calendario.stringToDate(Calendario.getDataAtual());


        abrirConexao();
        Recebimento agoraRecebimento = servico.getRecebedev();

        fecharConexao();

        if (eDevolve = true && agoraRecebimento.getDataRecebe().after(data)) {
            this.addMessage("recebimento", WARN_DATARECEBE_MAIOR_DATA_ATUAL, FacesMessage.SEVERITY_WARN, "");
            retorno = false;
        } else {
            retorno = true;
        }
        return retorno;
    }


    public void chamaValidadcao() {
        Date data = Calendario.stringToDate(Calendario.getDataAtual());

        abrirConexao();
        Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
        fecharConexao();


        servico.setData_ultimo_recebimento_servico(servico.getRecebedev().getDataDevolve());

        if (uLtimoRecebimento.getDataRecebe() == null) {
            eDevolve = true;
            eRecebe = false;
            servico.getRecebedev().setDataRecebe(data);
            servico.getRecebedev().setDataDevolve(null);
            servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
            servico.getRecebedev().setObservacoes("");

        } else if (uLtimoRecebimento.getDataDevolve() == null) {
            servico.getRecebedev().setDataDevolve(data);
            eRecebe = true;
            eDevolve = false;
            servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataRecebe());
            servico.getRecebedev().setObservacoes("");
        } else {
            eDevolve = true;
            eRecebe = false;
            servico.getRecebedev().setDataRecebe(data);
            servico.getRecebedev().setDataDevolve(null);
            servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
            servico.getRecebedev().setObservacoes("");

        }
    }

    public void validaRecebidoOK() {
        Date data = Calendario.stringToDate(Calendario.getDataAtual());
        abrirConexao();
        Recebimento uLtimoRecebimento = dao.pesquisarUltimaDataRecebimentoServico(servico.getCodigo_servico());
        fecharConexao();
        if (uLtimoRecebimento.getDataRecebe() == null && servico.getRecebedev().getStatusServico().equals("4")) {
            eDevolve = true;
            eRecebe = false;
            servico.getRecebedev().setDataRecebe(data);
            servico.getRecebedev().setDataDevolve(null);
            servico.setData_ultimo_recebimento_servico(uLtimoRecebimento.getDataDevolve());
            servico.getRecebedev().setObservacoes("");
            System.out.println("RCEBI:" + servico.getRecebedev().toString());

        } else {
            chamaValidadcao();
        }

    }
}

Classe Recebimento:

public class Recebimento {

   private int numRecebe;
   private Date dataRecebe;
   private Date dataDevolve;
   private String observacoes;
   private int fkNumServico;
   private String statusServico;

    public Recebimento() {
    }

  //Metodos get e set

   
    @Override
    public String toString(){
        return
                "\n+++++++++++++++++++++++++++++++++++++++" +
                "\nRecebimento numero= " + this.numRecebe +
                "\nDataRecebimento= " + this.dataRecebe +
                "\nDataDevolução= " + this.dataDevolve +
                "\nObservações= " + this.observacoes +
                "\nStatus= " + this.statusServico +
                "\nFK_NUM_SERVICO= " + this.fkNumServico +
                "\n+++++++++++++++++++++++++++++++++++++++" ;
    }

}

Modal jsf só o conteúdo do body:

  <body>

        <ui:composition>

            <f:subview id="subEditarRecebimento">

                <a4j:form id="frmCrudEditarRecebimento">

                    <!-- Modal Painel panelNovoFeriado -->
                    <rich:modalPanel id="panelEditarRecebimento" autosized="false" keepVisualState="false" resizeable="false" width="600" height="500">

                        <!-- Cabeçalho do Modal -->
                        <f:facet name="header">
                            <h:outputText value="Editar Recebimento"/>
                        </f:facet>

                        <!--Mascara Data-->
                        <a4j:loadScript src="/scripts/jquery.maskedinput-1.1.4.js"/>
                        <rich:jQuery id="mskData" selector=".txtData" timing="onload" query="mask('99/99/9999',{placeholder:' '})" />

                        <!--Mascara Percentual-->
                        <rich:jQuery id="mskPercentual" selector=".txtPercentual" timing="onload" query="mask('9,99999',{placeholder:' '})" />


                        <f:facet name="controls" >
                            <h:graphicImage styleClass="close" value="/images/close.gif" onclick="Richfaces.hideModalPanel('panelEditarRecebimento')" />
                        </f:facet>

                        <fieldset class="fieldForm">
                            <rich:messages errorClass="alerta1" warnClass="alerta2" infoClass="alerta3" tooltip="true" showDetail="false"/>

                            <h:panelGrid columns="2" id="painelRecebimento">

                                <h:outputLabel for="teste" value="Serviço:"/>
                                <h:inputText id="teste" value="#{ManterRecebimento.servico.codigo_servico}"  disabled="true" size="10">
                                    <a4j:support event="onchange" reRender="frmCrudEditarRecebimento" ajaxSingle="true"/>

                                </h:inputText>

                                <h:outputLabel for="dataAberturaServico" value="Data de Abertura do Serviço:"/>
                                <h:inputText id="dataAberturaServico" value="#{ManterRecebimento.servico.data_abertura_servico}" size="10" disabled="true">
                                    <f:convertDateTime pattern="dd/MM/yyyy"/>
                                </h:inputText>

                                <h:outputLabel for="inputDescServico" value="Descrição do Serviço:"/>
                                <h:inputTextarea id="inputDescServico" value="#{ManterRecebimento.servico.desc_servico}" disabled="true" cols="40"/>

                                <h:outputLabel for="dataRecebimento" value="Data de Recebimento/Devolução Anterior do Serviço:"/>
                                <h:inputText id="dataRecebimento" value="#{ManterRecebimento.servico.data_ultimo_recebimento_servico}" size="10" disabled="true">
                                    <f:convertDateTime pattern="dd/MM/yyyy"/>
                                </h:inputText>

                                <h:outputLabel for="inputStatusAnterior" value="Situação Recebimento Anterior:"/>
                                <h:selectOneMenu id="inputStatusAnterior" value="#{ManterRecebimento.recebimento.statusServico}" disabled="true">
                                    <f:selectItem itemValue="0" itemLabel="Contratado" />
                                    <f:selectItem itemValue="1" itemLabel="Recebido para Avaliação" />
                                    <f:selectItem itemValue="2" itemLabel="Devolvido para Correção" />
                                    <f:selectItem itemValue="3" itemLabel="Rejeitado" />
                                    <f:selectItem itemValue="4" itemLabel="Recebido OK" />
                                </h:selectOneMenu>

                                <a4j:outputPanel id="panelAtualizaRecebeOk">
                                    <h:outputLabel for="inputStatus" value="Situação Recebimento:"/>
                                    <h:selectOneMenu id="inputStatus" value="#{ManterRecebimento.recebimento.statusServico}" rendered="#{ManterRecebimento.recebimento.statusServico != 1}">
                                        <f:selectItem itemValue="1" itemLabel="Recebido para Avaliação" />
                                    </h:selectOneMenu>

                                    <h:selectOneMenu id="inputStatus1" value="#{ManterRecebimento.recebimento.statusServico}" rendered="#{ManterRecebimento.recebimento.statusServico == 1}">
                                        <f:selectItem itemValue="2" itemLabel="Devolvido para Correção" />
                                        <f:selectItem itemValue="3" itemLabel="Rejeitado"  />
                                        <f:selectItem itemValue="4" itemLabel="Recebido OK" />
                                        <a4j:support event="onchange" reRender="panelAtualizaRecebeOk" action="#{ManterRecebimento.validaRecebidoOK}"  ajaxSingle="true"/>
                                    </h:selectOneMenu>

                                    <h:outputLabel for="inputDataRecebimento" value="Data de Recebimento do Serviço:" rendered="#{ManterRecebimento.recebimento.statusServico !='4'}"/>
                                    <rich:calendar id="inputDataRecebimento" datePattern="dd/MM/yyyy" value="#{ManterRecebimento.recebimento.dataRecebe}"
                                                   disabled="#{ManterRecebimento.eRecebe}" required="true" requiredMessage="* 'DATA DE RECEBIMENTO' não informado."
                                                   inputClass="txtData" enableManualInput="true" direction="top-right" mode="client" />

                                    <h:outputLabel for="inputDataDevolucao" value="Data Devolução do Serviço:"/>
                                    <rich:calendar id="inputDataDevolucao" datePattern="dd/MM/yyyy" value="#{ManterRecebimento.recebimento.dataDevolve}"
                                                   disabled="#{ManterRecebimento.eDevolve}"   inputClass="txtData" enableManualInput="true"
                                                   direction="top-right" mode="client" />

                                    <h:outputLabel for="inputPercErros" value="Percentual de Erros do Serviço:"/>
                                    <h:inputText id="inputPercErros" styleClass="txtPercentual" value="#{ManterRecebimento.servico.perc_erros_servico}" size="8" onkeypress="somenteNumero(event);">
                                        <f:convertNumber pattern="#,##0.00000"/>
                                    </h:inputText>

                                    <h:outputLabel for="inputObsServico" value="Descrição do Recebimento/Devolução:"/>
                                    <h:inputTextarea id="inputObsServico" value="#{ManterRecebimento.recebimento.observacoes}" cols="40"/>
                                </a4j:outputPanel>
                            </h:panelGrid>
                            <br/>

                            <a4j:outputPanel id="botoes" styleClass="formButton">
                                <a4j:commandButton styleClass="button" value="Inserir" action="#{ManterRecebimento.inserirRecebimentoServico}" onclick="javascript:Richfaces.hideModalPanel('panelEditarRecebimento')" reRender= "painel2,lstCrudRecebimentos, "/>
                                <a4j:commandButton styleClass="button" value="Cancelar" onclick="javascript:Richfaces.hideModalPanel('panelEditarRecebimento')" immediate="true"/>
                            </a4j:outputPanel>

                        </fieldset>

                    </rich:modalPanel>

                </a4j:form>

            </f:subview>

        </ui:composition>

    </body>

Eu não sei o codigo da classe Servico, mas pelo que pude perceber, no metodo validaRecebidoOK, você seta o atributo dataRecebe da recebedev do servico.
E tem mapeado na view o atributo data_abertura_servico do servico.
Você precisa atualizar esse atributo (atributo data_abertura_servico) para ser exibido na view corretamente.