名探偵再び。

実はこういうケースが一番困る。何らかの設定にミスがあるにもかかわらず、書式にエラーなどがあるわけでは無く、期待の動作をしないだけで無く、何処がおかしいのか見つけるのが非常に難しい。(この日本語もひじょーに難しい)

まずは当たり前の動作を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回目)