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); }));
と書くことができる。