StrutsのTokenとvalidate

今回、Struts1.1を久しぶりにべたで触っていて、ちょっと気になったところをメモしておく。

この設定ではEmpSearch.doにアクセスがくると、StrutsはEmpSearchAction.execute()を呼び出すわけですがその前に、EmpSearchFormにパラメータを設定したり、validate()メソッド呼んだりって作業もStrutsは実行しますね。


StrutsにはTokenってのがあってそれをAction.saveToken()で設定してあげて、isTokenValid()でチェックしてあげることにより不正な画面遷移を防止することができますので、例えばちゃんと設定されていれば、ブラウザにURLで直接http://〜/コンテキスト/EmpSearch.doと入力したところでTokenエラーで画面遷移を防ぐことができるわけですが、今回EmpSearchForm.validate()でvalidateを設定していたため、

Strutsが呼び出すのはこの順番ですんで、Tokenのチェックよりvalidate()が先に動いて、画面遷移されてしまったわけで。というよりstruts-config.xmlのinput="/WEB-INF/Top.jsp"に遷移してしまい、validateでのエラーメッセージが出力されるという間抜けな結果になった。ま、対応方法はいろいろあるでしょうが。ちょっとメモ