エラー処理¶
項目
クライアントサイドのエラー処理¶
クライアントサイドのエラー処理は 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’) を実行し、テーマを適用しないようにしてください。