wicketのonSubmitでDB保存などを行っていてExceptionが発生した場合に、画面にエラーメッセージを表示させる処理の方法です。
テンプレート側にはエラーメッセージを表示する領域を用意しておきます。
<div wicket:id="feedback"></div>
java側では以下のように書きます。
class AjaxSubmitButton extends IndicatingAjaxButton { private static final long serialVersionUID = 1L; /** * @param id */ public AjaxSubmitButton(String id, String indicatorUrl) { super(id, indicatorUrl); } /** * @param target * @param form */ @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { try { //登録処理 } catch (Exception e) { logger.error("Exception", e); error("エラーが発生しました。もう一度操作を行ってください。"); } } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.addComponent(form.get("feedback")); } }
onSubmitのcatch内で
error(“画面に出すエラーメッセージ”)
をセットすることで、エラーと判断されて処理がonErrorに渡されるようになります。
参考
http://yuroyoro.hatenablog.com/entry/20080214/1202987807
http://stackoverflow.com/questions/10577883/error-in-onsubmit-feedback-not-rendering