Wicket8 でラムダによる AjaxButton.onSubmit static メソッドの登場と思いきや、8.0.0-M4 から M5 以降で消滅して
AjaxFormSubmitBehavior を使うのを納得したが、Link の onClick static メソッドでのラムダも消滅してるのは、
非常に残念だ。
Ajax ではなく、普通にリンク onclick に対するラムダ式記述効果の恩恵が欲しかったのに。。
http://oboe2uran.hatenablog.com/entry/2017/05/24/001329
http://oboe2uran.hatenablog.com/entry/2017/05/24/001329
HTML aタグに、Button コンポーネント充てて書きたくはないのである。
それなら、8.0.0-M4 で書かれていた方法で、自分用に org.apache.wicket.markup.html.link.Link を継承して
用意してしまえばいい。
import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.model.IModel; import org.apache.wicket.util.lang.Args; import org.danekja.java.util.function.serializable.SerializableConsumer; /** * Link を継承、static onClick を追加 */ public abstract class XLink<T> extends Link<T>{ public XLink(String id){ super(id); } public XLink(String id, IModel<T> model){ super(id, model); } public static <T> XLink<T> onClick(String id, SerializableConsumer<XLink<T>> onClick){ Args.notNull(onClick, "onClick"); return new XLink<T>(id){ private static final long serialVersionUID = 1L; @Override public void onClick(){ onClick.accept(this); } }; } }
これを使えば、以下のようなものが書けるし、ラムダ式でいろいろクリック時の処理が、シリアライズの制約があるものの
書ける。
queue(XLink.onClick("linkid", t->setResponsePage(SamplePage.class, new PageParameters().add("code", "ABC") )));
以下を考えた人が凄いんだと思う。