Validwhen no Struts

Por favor pessoal,

Alguém pode me explicar como é o real funcionamento do validwhen?

Utilizo o Struts versão 1.2.9

Tipo se eu colocar assim:

<field property="data" depends="validwhen">
  <msg name="validwhen" key="Preenchar nome" resource="false"/>
  <var>
    <var-name>test</var-name>
    <var-value>((nome == null) and (*this* != null))</var-value>
  </var>
</field>

Ou assim:

<field property="data" depends="validwhen">
  <msg name="validwhen" key="Preenchar nome" resource="false"/>
  <var>
    <var-name>test</var-name>
    <var-value>((nome != null) and (*this* != null))</var-value>
  </var>
</field>

Ele trata da mesma forma!
Estou fazendo algo errado?

Você já parou pra ver o que o (this != null) está retornando?

plentz,

Me confirma uma coisa… o this representa a minha data, não é isso?

Dando pelo JavaScript um alert(data.value) ele retorno “” (vazio) e não null…

Só que se eu coloco (this == “”) dá o erro:

ValidWhen Error for field ' data' - line 1:48: unexpected char: '"'

Se coloco (this.equals("")) dá o erro:

ValidWhen Error for field ' data' - line 1:33: unexpected token: data.equals

Pra você entender melhor o funcionamento dele, dê uma olhada na referência do Struts

http://struts.apache.org/1.2.9/userGuide/dev_validator.html

[quote=plentz]Pra você entender melhor o funcionamento dele, dê uma olhada na referência do Struts

http://struts.apache.org/1.2.9/userGuide/dev_validator.html[/quote]

Entendido que a comparação deve ser com null.

The value null which will match against either null or an empty string 

E que this representa a variável testada.

The literal *this*, which contains the value of the field currently being tested

Mas mesmo assim o meu:

<var-value>((nome != null) and (*this* == null))</var-value>
<var-value>((nome == null) and (*this* == null))</var-value>

Continua retornando a mesma coisa. É como se a variável nome não estivesse fazendo diferença alguma.
E com certeza tem que fazer diferença!

Alguma ajuda a mais?

Eu agradeço muito…

Eu acho que você quer fazer isso não é não?

<field property="data" depends="validwhen"> <msg name="validwhen" key="Preenchar nome" resource="false"/> <var> <var-name>test</var-name> <var-value>((nome == null) or (*this* != null))</var-value> </var> </field>

  • Apenas troquei o AND pelo OR

Hehehehehe

Valeu ae cara (eusourafael), mas já havia resolvido esse problema a bastante tempo!

Você pegou uma menssagem velha (de julho).