Salve, Galera,
Estou com um problema quando uso validwhen.
Eu tenho dois campos de datas, elas não não obrigatórias, mas se o usuário informar pelo menos uma delas, a outra passa a ser obrigatória. Eu só posso permitir a pesquisa em um intervalo de datas especificado. Portanto o usuário deve fornecer as datas inicial e final.
O validator que eu criei está assi:
<form name="pesquisaSistemasIndisponiveisForm">
<field property="dtInicio" depends="validwhen, date">
<arg key="ui.label.erro.sistemasIndisponiveis.dtInicio" position="0"/>
<var>
<var-name>test</var-name>
<var-value>(((*this* != null) and (dtFim != null)) or (*this* == null) )</var-value>
</var>
<var>
<var-name>datePattern</var-name>
<var-value>dd/MM/yyyy</var-value>
</var>
</field>
<field property="dtFim" depends="validwhen, date">
<arg key="ui.label.erro.sistemasIndisponiveis.dtFim" position="0"/>
<var>
<var-name>test</var-name>
<var-value>( ((*this* != null) and (dtInicio != null)) or (*this* == null) )</var-value>
</var>
<var>
<var-name>datePattern</var-name>
<var-value>dd/MM/yyyy</var-value>
</var>
</field>
A partir daqui começam as estranhesas…
Se eu inserir uma data invalida (por exemplo 20/20/2000) no campo data inicial, e uma data válida no campo data final, eu recebo uma mensagem: “Data inicial inválida”. Ok, era isso o que eu queria.
Mas se eu inserir qualquer valor na “data inicial” (para testar apenas o validwhen) e deixar a data final em branco, eu recebeo a mensagem: “Data inicial é um campo obrigatório”. Ora, a data inicial está preenchida, e a validação de date (feita no primeiro exemplo) mostra que a referencia ao nome do campo está correta. O unico problema está na validação da restrição requiredwhen.
Alguém tem alguma dica?
Obrigado
Léo