wicketのonSubmitでエラーになった時の処理

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