Link.onClick static が消滅して欲しくない。それならば、、

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") )));


以下を考えた人が凄いんだと思う。

GitHub - danekja/jdk-serializable-functional: Library with serializable versions of java.util.function.* interfaces.