半日以上はまって解決できなかった問題。
validator.xmlでvalidwhenを使おうとしたけど何故か使えない。
JDK1.4.2, struts1.3.8という組み合わせで色々と調べたけど
まず普通に使えそうな感じ。
だけど使えないんです><
どうなるかというと、
・サーバ起動時はvalidator.xmlのロードでエラーは発生しない
わざとエラーになるようにして書いて差を見たけどやっぱりエラーではない
・画面をIEで表示してソースを見ると他のrequiredはスクリプトが生成されているけど
validwhenはスクリプトが生成されていない
・実行してみると全くvalidwhenのチェックは行われていない
エラーにもならないけどチェックも行われない、
つまり最初から何もなかったかのような挙動
という状態です。
ちなみにrequiredなどでスペルを間違えると画面表示時にエラーになるので
スペルミスとも考えにくいです。
スクリプトはJSに展開するようにしています。
(html:javascriptのdynamicJavascript="true"を指定)
試しにdepends="validwhen, minlength"とかすると見事にvalidwhenを飛ばして
スクリプトが展開されます。
何を元に展開しているんでしょうね〜。
validwhenの前身っぽいrequiredifも使えませんでした。
何が基準なのかさっぱり。
半日以上かかりましたが、この問題は結局挫折しました。
JavaScriptで手書きする事にします。
この感じだとvalidator.xmlには基礎的な型チェックを書くだけかな〜。
ちなみにちょっと前にindexedPropertyでもはまってて結局解決できなかったのですが
多分これも同じ問題が根底にあるせいだと思います。
へるぷみー
PR