Wicket のバリデーションクラスをどうしても書けない時、
それでも、feedback の Panel にエラーを出したい場合がある。
<div wicket:id="feedback"></div>
FeedbackPanel feedback = new FeedbackPanel("feedback");
feedback.setOutputMarkupId(true);
add(feedback);
と書いて、バリデーションクラスを書かなくても、無理やりこの feedback にエラーを出力するには、
AjaxButton の onSubmit で、入力チェック後エラーなら、jQuery を実行して、メッセージをセットする。
そのあとで、onErrorを呼び出す。
Wicket の バリデータが、必ず class="feedbackPanel" の ul タグ、
class="feedbackPanelERROR" の li タグ、
class="feedbackPanelERROE" の span タグに、メッセージを書くと
いうことを代わりに実行する。だけのことである。
Form<Void> form = new Form<Void>("form");
form.setMultiPart(true);
form.add(new AjaxButton("ajaxsubmit",form){
@Override
protected void onSubmit(AjaxRequestTarget target,Form<?> f){
if ( 入力チェック ){
target.appendJavaScript(
"$('div.feedback').html('<ul class=\"feedbackPanel\"><li class=\"feedbackPanelERROR\"><span class=\"feedbackPanelERROR\">1つ以上の項目を入力する必要があります</span></li></ul>');
");
onError(target, f);
return;
}
// submit の処理
}
@Override
protected void onError(AjaxRequestTarget target,Form<?> f){
// エラー処理
}
});