Validwhen

1 resposta
L

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

1 Resposta

the_negao
Pelo que entendi, se os dois campos estiverem vazios, o validwhen não deve ser verificado... Mas se pelo menos um estiver especificado o outro tb deve estar... então tente assim:
<var>
    <var-name>test</var-name>
    <var-value>(((*this* != null) and (dtFim != null)) or ((*this* == null) and (dtFim == null)))</var-value>
</var>

...

<var>
    <var-name>test</var-name>
    <var-value>(((*this* != null) and (dtInicio != null)) or ((*this* == null) and (dtInicio == null)))</var-value>
</var>
Criado 31 de julho de 2006
Ultima resposta 31 de jul. de 2006
Respostas 1
Participantes 2