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はこんなところ。
- 入力の検証
- ページのテンプレート対応
- コンポーネント作成