名探偵再び。
実はこういうケースが一番困る。何らかの設定にミスがあるにもかかわらず、書式にエラーなどがあるわけでは無く、期待の動作をしないだけで無く、何処がおかしいのか見つけるのが非常に難しい。(この日本語もひじょーに難しい)
まずは当たり前の動作を1つ1つ検証していくしかない。結構地道な作業になるんやけど、まあしょうがない。
[状況]
エラーがあるにもかかわらずエラーが出ない。
[指針1]
エラーチェック処理が正しく呼び出されているか?
LoginForm.java(検証仕様:トレーサ付き)
import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.validator.ValidatorForm; public class LoginForm extends ValidatorForm { public LoginForm() { System.out.println("LoginForm costructor"); } public ActionErrors validate(ActionMapping map, HttpServletRequest request) { System.out.println("LoginForm.validate call from(" + map.getInput() + ")"); return super.validate(map, request); } private String userID; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } }
コンストラクタと検証用の仮想関数にトレースログを吐く処理を追加。本当は Logger の API とか使わなくちゃいけないんやけど、今は単純なレベルで。Logging API は宿題って事で。
で、ババン!
C:\Program Files\Apache Software Foundation\Tomcat 5.0\logs\stdout.log
情報: Jk running ID=0 time=0/340 config=C:\Program Files\Apache Software Foundation\Tomcat 5.0\conf\jk2.properties
2004/12/06 0:16:47 org.apache.catalina.startup.Catalina start
情報: Server startup in 16574 ms
LoginForm costructor
LoginForm costructor
LoginForm.validate call from(Login.jsp)
validator はきちんと呼び出されている。つまり、エラーチェックしてるけど、エラーが無いって判断されてるって事。
この時点で2つの正しさが証明される。
どうやら、検証関数呼び出しつまりバリデーション機能の追加は問題無いようだ。
ここまでおよそ1時間。
まだまだ夜は長いぜー(2回目)