[YMIR-294] 画面固有のExceptionHandling Created: 2009-01-21  Updated: 2009-02-28  Resolved: 2009-02-27

Status: Closed
Project: Ymir
Component/s: ymir-core
Affects Version/s: 1.0.0
Fix Version/s: 1.0.2

Type: Improvement Priority: Major
Reporter: jflute Assignee: skirnir
Resolution: Fixed Votes: 0
Labels: None


 Description   

【概要】
「この例外だったらここへ遷移する」
というようなグローバルなExceptionHandlingではなく
「この画面でこの例外だったらここへ遷移する」
という画面固有のExceptionHandlingがあると良い。

Pageクラスでtry-catchして遷移で事足りる場合は問題ないが、
「トランザクションをRollbackして遷移」したいことが多い。

Pageクラスでトランザクションを開始するアーキテクチャ特有の
問題ではあるが、「Pageクラスでトランザクションを開始する」事自体は
メリットがあるため、上記問題を解決するソリューションを追加する方が良い。

【解決案】
Teedaを使った実業務で用いられたやり方:

PageクラスのInterceptorの中で
初期化時にPageクラスのアノテーションから例外情報と遷移先を取得して、
実行時に発生した例外が一致するならその遷移先に飛ばす。
(Teedaにはこの機能がないのでアプリ独自で作っていた)

@ExceptionHandling(BizXxxException.class, BarPage.class)
public class FooPage {
}


 Comments   
Comment by skirnir [ 2009-02-28 ]

完了とします。

Comment by jflute [ 2009-02-27 ]

確認しました。ありがとうございます。
おかげでとてもユーザビリティの高い画面が作れそうです。

Comment by skirnir [ 2009-02-27 ]

対処しました(r2855)。

Comment by jflute [ 2009-02-24 ]

議論した結果:

アノテーションではなく、Pageクラスにコールバックするような感じで。

@ExceptionHandling(BizXxxException.class)
public Response handleXxx() {
    return Redirect.to(...);
}
Comment by jflute [ 2009-01-21 ]

遷移先へ渡す値とかメッセージとかどう扱うかは要検討かと思われます。
最低限Getパラメータが渡せる必要があるかと。

Generated at Fri Apr 19 12:52:59 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.