次期S2Wicketではこうなります

前のエントリでちょっと触れた S2Wicketの方向性。現在,考えていることが実際に実現可能かどうかを検証している段階である。で,とりあえず次期S2Wicketを使うと,これがこーなります,というコードを掲載しよう。

例えば,

public class HelloWorldPage extends WebPage { private LabelModel model; private Label hello; private Link link; @SeasarComponent private HelloService helloService; public HelloWorldPage() { model = new LabelModel(); hello = new Label(“hello”, new PropertyModel(model, “hello”)); add(hello); link = new Link(“link”) { @Override public void onClick() { model.setHello(helloService.say()); } }; add(link); } }

というコードが,

public class HelloWorldPage extends WebPage { @WicketModel private LabelModel model; @WicketComponent private Label hello; @WicketComponent private Link link; @SeasarComponent private HelloService helloService; public void onClickLink() { model.setHello(helloService.say()); } }

というようになる予定。LabelModelは,helloプロパティのみを持つシンプルなJavaBeansクラスで,HelloServiceはS2Container管理下のビジネスロジックオブジェクト。

将来的には,命名規約を適用して,アノテーションすら書かなくてもいいようにするつもりだ。コンポーネントの登録,モデルとコンポーネントの関連付けはS2Wicketに任せて,開発者はイベントハンドラのみを書くだけで済む,という感じだ。

ページが持つモデルと,ビジネスロジックが扱うモデルの橋渡しをS2Dxoを使ってS2Wicket内でやってあげれば,@WicketComponentアノテーションに呼び出すビジネスロジックを指定するようにするだけで,イベントハンドラのメソッドすら書かなくてもいいようにできるかもしれない。マスタメンテ系の画面であれば,ページが持つモデルとビジネスロジックが扱うモデルは非常に近いものだろうし,呼び出すビジネスロジックも単純なものだろう。フィールド定義のみでマスタメンテ系のページは作れるようになる,かも。

ま,単純なところから手を付けているので,とりあえずは上記のような感じってことで。「○○ってどーすんのよ!?」というような突っ込み大歓迎。

このエントリーをはてなブックマークに追加

関連記事

2023年のRemap

Remapにファームウェアビルド機能を追加しました

Google I/O 2023でのウェブ関連のトピック

2022年を振り返って

現在のRemapと今後のRemapについて