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 を処理 });