Validação de calendar com RICH FACES

Olá pessoal tenho uma dúvida com o uso do calendar no rich faces, é o seguinte:
tenho dois calendarios que pegam datas cadastradas no banco de dados para uma rotina de recebimento e devolução, até ai ta tudo tranquilo, ele pega as datas cadastra e traz blz.
O que eu quero é que quando o calendario de recebimento já estiver setado(pego do banco), este fique desabilitado para edição só podendo dar uma data para o calendário de devolução. E se os dois estiverem setados, ou seja já existe um recebimento e devolução, os dois fiquem livres para escolha de novas datas.

 <h:outputLabel for="inputDataRecebimento" value="Data de Recebimento do Serviço:" />
 <rich:calendar id="inputDataRecebimento" datePattern="dd/MM/yyyy" value="#{ManterRecebimento.serv.dataRecebe}"  rendered="#{ManterRecebimento.serv.dataDevolve == null}" 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.serv.dataDevolve}" rendered="#{ManterRecebimento.serv.dataDevolve == null}"   inputClass="txtData" enableManualInput="true" direction="top-right" mode="client" /> 

O erro desse código é que quando a data é nula ele desaparece com o calendário e eu quero que apareça mas com seu valor limpo para inserir nova data de recebimento e devolução caso haja as duas ou só devolução caso o recebimento já exista.
Alguma dica??
Agradeço desde já

ja tentou usar ‘disabled’ ao inves do ‘rendered’?

fiz assim :

  &lt;h:outputLabel for="inputDataRecebimento" value="Data de Recebimento do Serviço:" /&gt;
                                &lt;rich:calendar id="inputDataRecebimento" datePattern="dd/MM/yyyy" value="#{ManterRecebimento.serv.dataRecebe}"  disabled="#{ManterRecebimento.serv.dataRecebe != null}" required="true" requiredMessage="* 'DATA DE RECEBIMENTO' não informado."
                                               inputClass="txtData" enableManualInput="true" direction="top-right" mode="client" /&gt;

                                &lt;h:outputLabel for="inputDataDevolucao" value="Data Devolução do Serviço:"/&gt;
                                &lt;rich:calendar id="inputDataDevolucao" datePattern="dd/MM/yyyy" value="#{ManterRecebimento.serv.dataDevolve}" disabled="#{ManterRecebimento.serv.dataRecebe == null}"   inputClass="txtData" enableManualInput="true" direction="top-right" mode="client" /&gt;

valeu cara deu certo para o meu primeiro problema.
Mas se tiver a data de recebimento não preenchida ele desabilita o campo devolve, pq nuam posso devolver algo que não foi recebido ok, porem ele desabilita mas com a data da devolução do banco, o que eu quero é que ele desabilite e não apareca a data pega no banco, e se os calendar estiverem com com data de recebimento e devolução preenchida, como faço para zerar os dois calendar para o próximo recebimento ?
Vlw por responder

bom, se vc nao quer que aparecam as datas que estao no seu banco, porque vc esta fazendo o bind desses valores no calendar pra comeco de conversa? nao existe magica, o codigo faz o que vc esta mandando ele fazer …

creio que isso seja algo que vc tem que resolver no seu fluxo, proximo recebimento nao seria um registro novo? sendo assim, os valores nao estarao preenchidos ateh o momento que alguem entrar esses valores, certo? se vc quer ter um novo recebimento, vc deveria ter algo na tela como proximo recebimento, e esta action por si soh deveria prover uma forma de um novo registro ser criado pra vc, seja chamando um servico, ou seja la o que vc for que vc usa nas suas camadas … mas vc tem que codificar isso … novamente, nao existe magica …

[quote=balrog]

bom, se vc nao quer que aparecam as datas que estao no seu banco, porque vc esta fazendo o bind desses valores no calendar pra comeco de conversa? nao existe magica, o codigo faz o que vc esta mandando ele fazer …

creio que isso seja algo que vc tem que resolver no seu fluxo, proximo recebimento nao seria um registro novo? sendo assim, os valores nao estarao preenchidos ateh o momento que alguem entrar esses valores, certo? se vc quer ter um novo recebimento, vc deveria ter algo na tela como proximo recebimento, e esta action por si soh deveria prover uma forma de um novo registro ser criado pra vc, seja chamando um servico, ou seja la o que vc for que vc usa nas suas camadas … mas vc tem que codificar isso … novamente, nao existe magica … [/quote]

Então cara na verdade é assim quando falei

quiz dizer a data de devolução quando estiver com data de recebimento e devolução preenchida, o que esta acontecendo agora.
na verdade pensei em fazer isso pq já tinha usado o rich column com o rendered dessa forma:


    &lt;rich:column id="nivelStatus"&gt;
                                &lt;h:outputText value="Contratado" id="nivel0" rendered="#{servico.status_servico == 0}"/&gt;
                                &lt;h:outputText value="Recebido para Analise" id="nivel1" rendered="#{servico.status_servico == 1}"/&gt;
                                &lt;h:outputText value="Recebido com Ajustes" id="nivel2" rendered="#{servico.status_servico == 2}"/&gt;
                                &lt;h:outputText value="Recebido OK" id="nivel3" rendered="#{servico.status_servico == 3}"/&gt;
                                &lt;h:outputText value="Rejeitado" id="nivel4" rendered="#{servico.status_servico == 4}"/&gt;
    &lt;/rich:column&gt;

e achei que fosse possivel usar o rendered com o calendar dependendo da minha condição.
Vou tentar entaum outra forma de implementação.
Obrigado pelas respostas
Abraço