先月、Wicket-8.0.0-M4 から M5 まで更新された時、 AjaxButton.onSubmit staticメソッドの BiConsumer 使用が
削除されていて、ショックだったけど、
Wicket 8.0.0-M4 から M5 で、AjaxButton.onSubmit が。。。 - Oboe吹きプログラマの黙示録
よーく調べると、org.apache.wicket.ajax.form.AjaxFormSubmitBehavior があるから、ビヘビアとして
onSubmit の振る舞いをラムダを書きたければ、
public static AjaxFormSubmitBehavior onSubmit(String eventName,
SerializableConsumer
を使えということになったみたいだ。
M4 の static AjaxButton#onSubmit は、SerializableBiConsumer で、ボタンコンポーネントも引数だったが、
ここで、自身のボタンコンポーネントを引数にもらっても、用はない。
AjaxRequestTarget だけで充分だ。
<button wicket:id="send" type="button">送信</button> のようなものがあった時、
queue(new Button("send").add(AjaxFormSubmitBehavior.onSubmit("click", t->{ response.setDefaultModelObject(info.getValue()); t.add(response); })));
みたいに書くことになる。ただ、onError に対するラムダは無い。役にたたないから消えたのかも。。。
ビヘビアとして add するのが長いコードになる気もしたが、Wicket は、昔からビヘビアを書くことの重要さを
考えると納得もしてくる。
このビヘビアの書き方の方が、あらゆる事象で実行させたいものを埋め込むということができるような気がする。
すると、ルーツである Behavior には、
public static Behavior onAttribute(String name, SerializableFunction<String, CharSequence> onAttribute)
と、
public static Behavior onTag(SerializableBiConsumer<Component, ComponentTag> onTagConsumer)
があるではないですか。
onComponentTag オーバーライドや、AttrobuteModifier やらを書かなくてもこれらラムダで書けてしまうって
ことだとろうか。。。
時間がある時に、書いてみようと思う。
もう、M5から、Wicket-8.0.0-M6 になってる。
事の発端は、以下のこんな議論・検討があったからだけど、ラムダのファクトリ staticメソッドがコードを書く側から
見れば、やはり魅力的なんだけど、視点をコード書く側のことも考えてほしい。