intra-mart Accel Platform TERASOLUNA Server Framework for Java (5.x) プログラミングガイド 第15版 2019-08-01

エラー処理

クライアントサイドのエラー処理

クライアントサイドのエラー処理は UIデザインガイドライン( PC 版) の エラー処理 を参照してください。

TERASOLUNA Server Framework for Java (5.x) for Accel Platform での汎用メッセージ画面

アプリケーション内で発生したエラーによっては、回復不能な場合があります。
このような場合に表示する画面の view を提供します。

View名

表示できるメッセージ表示画面の種類、その画面に遷移するための view名を定義している定数を以下の通りです。
  • エラー
  • jp.co.intra_mart.framework.extension.spring.web.servlet.view.TransferView.VIEW_NAME_ERROR
  • 警告
  • jp.co.intra_mart.framework.extension.spring.web.servlet.view.TransferView.VIEW_NAME_WARN
  • インフォメーション
  • jp.co.intra_mart.framework.extension.spring.web.servlet.view.TransferView.VIEW_NAME_INFO
メッセージ表示画面に表示できるのは、
  • タイトル
  • メッセージ
  • 詳細なエラーメッセージ
の3つです。
また、メッセージ表示画面表示後の遷移先を指定することも可能です。
遷移先 URL、遷移先 URL のラベルを指定すると、画面遷移のボタンが表示されます。
遷移先 URL へ引き渡すパラメータを指定すると、そのパラメータが遷移先に引き渡されます。
メッセージ表示画面へは jp.co.intra_mart.foundation.ui.page.Transfer を利用しています。 view からTransferを呼び出してメッセージ画面へリダイレクトします。

実装例

エラー画面へ遷移するための例を示します。
TransferErrorView に指定するパラメータの詳細は、API リファレンスを参照してください。
ここでは、 基本( intra-mart Accel Platform での初めてのプログラミング) のステップ7で作成したクラスを修正する形で紹介します。
テキストボックスに “error” と入力された場合、エラーページへ遷移します。
   import jp.co.intra_mart.foundation.ui.page.Transfer.Message;
   import jp.co.intra_mart.framework.extension.spring.web.servlet.view.TransferView;

    // (中略)

    @RequestMapping
    public String index(@ModelAttribute HelloForm helloForm) {
        // 入力した項目を再表示するため、@ModelAttribute HelloFormを引数に設定します。
        return "sample/tgfw/hello/index.jsp";
    }

    /**
     * 結果表示画面のパスを返却します。
     * @return 結果表示画面のパス
     */
    @RequestMapping("output")
    public String output(@ModelAttribute HelloForm helloForm, Model model) {
        // メッセージ画面のviewへ情報を渡すために、引数にModelを設定します。

        if ("error".equals(helloForm.getName())) {
            final Message message = new Message();
            message.setTitle("入力エラー");
            message.setMessage("入力エラーが発生しました。再入力してください。");
            message.setDetails(new String[] { "詳細メッセージ01", "詳細メッセージ02" });
            message.setReturnUrl("sample/tgfw/hello");          // index画面への URL
            message.setReturnUrlLabel("入力画面へ戻る");

            final Map<String, Object> parameters = new HashMap<String, Object>();
            parameters.put("name", "re-enter!");                // name に値を設定する。
            message.setParameters(parameters);

            model.addAttribute(TransferView.MESSAGE, message);  // modelの TransferView.MESSAGE 属性に Message オブジェクトをセットする。
            return TransferView.VIEW_NAME_ERROR;                // エラー画面の view名 TransferView.VIEW_NAME_ERROR を返す。
        }

        return "sample/tgfw/hello/output.jsp";
    }

コラム

intra-mart Accel Platform では、メッセージ表示画面へ遷移するメソッド Transfer が提供されています。
Transferメソッドを実行すると内部でリダイレクト処理が実行されますが、Spring MVC の Controllerの処理メソッド内でこのTransferのメソッドを利用すると、Transferメソッドのリダイレクト処理の後に、さらに処理メソッドの返却されるView名に応じてフォワード処理が実行されてしまいます。
そのため、エラー画面/警告画面/インフォメーション画面に遷移できるように、下記の通り View 名を提供しています。
  • エラー画面 : TransferView.VIEW_NAME_ERROR
  • 警告画面 : TransferView.VIEW_NAME_WARN
  • インフォメーション画面 : TransferView.VIEW_NAME_INFO

コラム

上記パラメータのメッセージは多言語対応していません。多言語対応したい場合は、MessageManager から取得したメッセージをセットしてください。

コラム

テーマを適用させたくない場合には、API を呼び出す前に HttpServletRequest に対し、setAttribute(‘imui-theme-builder-module’, ‘notheme’) を実行し、テーマを適用しないようにしてください。