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?
plentz
#2
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
plentz
#5
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!
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).