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

Wicket 8 の AjaxButton 、Link など

Wicket

Wicket 8 になるとこれまでよりもシリアライズ化された Consumer などによりラムダ記述は、
前に投稿した 
Wicket8 の LambdaModel - Oboe吹きプログラマの黙示録 の他に、

AjaxButton 、FeedBackPanel 、Link なども簡潔に書けるようになってくる。

AjaxButton には、

// onSubmit と onError の BiConsumer
onSubmit(String id, SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit
  , SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onError)

// あるいは、onSubmit だけ
onSubmit(String id, SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)

このおかげて、

queue(AjaxButton.onSubmit("submit", (b, t)->{
   /* onSubmit の処理 */
}, (b, t)->{
   /* onError の処理 */
});

// あるいは、
queue(AjaxButton.onSubmit("submit", (b, t)->{
   /* onSubmit の処理 */
});

と書ける。

FeedBackPanel でセットする IFeedbackMessageFilter メッセージも、setFilter は、

boolean feedbackError_flg = false;
final FeedbackPanel feedback = new FeedbackPanel("feedback");
feedback.setOutputMarkupId(true);
feedback.setFilter(e->feedbackError_flg);
queue(feedback);

と書いて

queue(AjaxButton.onSubmit("send", (b, t)->{
  feedbackError_flg = false;

  /* エラーで、feedbackError_flg を true 、error("Error message"); */
  t.add(feedback);
}));

とすることができる。

リンクの onClick も、Link.onClick で、シリアライズConsumerで、

queue(Link.onClick("bklink", k->{
   setResponsePage(HomePage.class);
}));

と書くことができる。