validwhenでハマる

ハマると言うほどのことでも無かったのだけど、2つ値が一致しているかどうかというvalidwhenを書いたが、これが思ったように動かない。

<field property="foo" depends="validwhen">
  <arg0 key="labels.foo" resource="true" />
   <var>
     <var-name>test</var-name>
     <var-value>(bar != *this*)</var-value>
   </var>
</field>

思ったように動かないというより、真逆の動きになる。よくよく考えてみれば、validwhen だから、テスト式が成立のときに valid という意味なんだよね。なぜか勝手に脳内で、「このテストが成立するときにエラーにする」という意味になっていた。ううう。

ということで

<var-value>(bar == *this*)</var-value>

で思うとおりの動作になりました。

パスワードの確認欄との整合性チェックなんかの場合に、有用でしょうか。今回は鍵認証で使ったんですが、まあ似たようなもんでしょう。