読者です 読者をやめる 読者になる 読者になる

Wicket 8 で AJAX イベントビヘビアを Generic に

Wicket 8 で AJAX イベントビヘビアを
oboe2uran.hatenablog.com

と書いたものの、落ち着いてみれば、一般用に以下のとおり書けるし、その方がビヘビアを追加した先の
コンポーネントを参照したビヘビアが書ける。。

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.danekja.java.util.function.serializable.SerializableBiConsumer;

/**
 * GenericAjaxEventBehavior
 */
public abstract class GenericAjaxEventBehavior extends AjaxEventBehavior{

   private GenericAjaxEventBehavior(String event){
      super(event);
   }

   public static GenericAjaxEventBehavior of(String eventName, SerializableBiConsumer<Component, AjaxRequestTarget> consumer){
      return new GenericAjaxEventBehavior(eventName){
         private static final long serialVersionUID = 1L;
         @Override
         protected void onEvent(AjaxRequestTarget target){
            consumer.accept(getComponent(), target);
         }
      };
   }
}

xxx というコンポーネントに add する AJAX のビヘビアは、、

xxx.add(GenericAjaxEventBehavior.of("click", (c, t)->{
    // クリックしたコンポーネント = c を参照
    // AjaxRequestTarget = t を処理
});