Wicketの問題点とその解消
Wicketは非常に便利なフレームワークであるが、もちろん問題が無いわけではない。 特に現代のIDEでは扱いにくい「文字列」による連携
wicket:idの問題
htmlにおいて
<div wicket:id="something"></div>
というWicketのためのIDを埋め込んでおき、Java側ではそれを
add(new Label("something", "これはテストです"));
などとして参照しなければならない。htmlとJava上のコンポーネント生成を結びつけるだけならば良いのだが、この文字列によるwicket:idはJavaプログラム中のあらゆるところに現れてしまう。例えば、フォームのフィールドに対する値の設定・取得、さらにはWicketTesterによるテストの際にもこの文字列が必要になる。
当然のことながら、IDEはこれらの二つが同じものを示していることを認識していないので、リファクタリングとしてこれらのIDを変更する際にはいちいち手作業で確認を行う必要がある。
もちろんテストを走行させてみればエラーの検出はできるし、それを受けて修正すればよいことであるが、しかし現代的な開発環境においてはこれは退化としか言えない。現代のIDEにおいては、変数や定数の名称を変更すればそれを参照するすべてのソースに反映されるようになっているのである。Wicketではこのような機能が全く使えなくなってしまう。
ただし、Wicketのベストプラクティスとして、そのような事柄が推奨されているのかどうかわからないが、以下のようにJava側で定数を定義し、それを使いまわすことは可能である。
public static final String ID_SOMETHING = "something"; .... add(new Label(ID_SOMETHING, "これはテストです"));
少なくともこれ位はやっておくべきだろう。