Wicketropyを少し直した。あとTODO。

前回気にしていた部分を直した。

  • idという名前の変数のgetterをWebPageのサブクラスで作ることが出来ない。
  • URLにはidを使い、ポストする際にはtropyIdという、同じ意味の別名を使ったことで混乱。

最初の方は、そもそもEditPage.javaのフィールド変数およびgetter/setterと、model/TropyEntry.javaのフィールド変数およびgetter/setterが重複していたので、最初からTropyEntryのインスタンスにフォームからの結果を格納させるように変更した。

public class EditPage extends WebPage {
  private TropyEntry entry;

//(中略)...
    //CompoundPropertyModel model = new CompoundPropertyModel(this);
    CompoundPropertyModel model = new CompoundPropertyModel(entry);

2番目の方は、先にテストコードからtropyIdを消し、idに統一。テストコードを実行し、失敗することを確認。それからコードの修正に取りかかった。

ただ、ユニットテストの結果とjettyで動かした結果で異なる点があった。

	public EditPage(PageParameters parameters) {
		super(parameters);
		logger.info("parameters = " + parameters.toString());

蒸気のコードの結果、ユニットテストの場合、

parameters = id = "1"

と表示されたのに対し、jettyで動かした場合、

parameters = id = ["1"]

となった。つまり、ユニットテストの場合はString, jettyで動かした場合はString[]が返ったわけ。理由はまだ調べていないが、サーブレットのrequest.getParameters()あたりの兼ね合いなんだろうか。。。


それはともかく、Wicketの動くサンプルは充実した方が世のためになるかと思うので、自分のヘタレなソースももう少し洗練させて、Wicketの機能もモリモリ使っていこうかなと考えています。直近のTODOはこんなところ。