Ticket #15216

コールバック関数内で画面遷移の分岐 (branch プロパティ) を指定したい

Open Date: 2009-02-24 18:18 Last Update: 2009-04-22 12:03

Reporter:
Owner:
(None)
Type:
Status:
Closed
Component:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

フォーラム 公開ディスカッション [#39840] からの引用

[forum: 39840]
> gantzyさん、かなり詳細なコメントありがとうございます!
> そして、同じ希望を持っておられるとのこと、気持ちが分かち合えて嬉しいです。
> 
> 実は、私自身も gantzyさんと同じような修正を加えて試した実績があります。
> 
> 具体的には、下記の修正を、maskatFW 2.0.0 の、core/maskat.js に加えて、
> onAfterResponseハンドラや、onFinishハンドラに設定した関数から branch変数
> への参照を獲得することに成功しています。
> 
> Index: maskatFW/core/maskat.js
> ===================================================================
> --- maskatFW/core/maskat.js	(revision 4)
> +++ maskatFW/core/maskat.js	(working copy)
> @@ -2257,7 +2257,8 @@
>  	finishHandle: function(event){
>  		/* コールバック関数 (finish) を実行 */
>  		if (this.onFinish) {
> -			this.onFinish();
> +		    var param = { evt: event };
> +		    this.onFinish(param);
>  		}
>  
>  		/* 終了ダイアログを表示 */
> @@ -2642,7 +2643,8 @@
>  
>  		try {
>  			if (this.handler.onAfterResponse) {
> -				var param = {
> +			    var param = {
> +				    evt: this.event,
>  					recvDOM: this.responseXML,
>  					xhr: this.xhr,
>  					stopProcess: false
> 
> 上記の修正を加えた core/maskat.js と、以下の JavaScript実装で、
> branch変数を設定して、画面遷移分岐制御が可能であることは確認済みです。
> 
> ■JavaScript(sample.js)
> function finishEvent(param)
> {
>   param.evt.branch = ローカル処理結果;
> }
> 
> function afterEvent(param)
> {
>   param.evt.branch = リモート処理結果;
> }
> 
> ただ、品質的な観点から、マスカット内部の構造を知らないまま、マスカット
> 内部を修正してしまう事は、可能な限り避けるべきだと考えているのです。
> 
> 従って、上記の変更内容で動作確認済みというのも、他の処理も含めて全く
> 問題がない、とまでは言い切れないですよね。。。(残念ながら。。。)
> 
> ということで、できれば、マスカット内部に手を加えず、ハンドラに設定した
> 関数から、汎用的な実装で、branch変数への参照を獲得できる方法というのを
> 探している訳です。
> 
> 何か良い案があれば、是非ご教示頂きたく、よろしくお願い致します。

Ticket History (3/4 Histories)

2009-02-24 18:18 Updated by: kazatoh
  • New Ticket "コールバック関数内で画面遷移の分岐 (branch プロパティを) 指定したい" created
2009-02-24 18:19 Updated by: kazatoh
  • Details Updated
2009-02-24 18:59 Updated by: kazatoh
  • Type Update from Feature Requests to Patches
  • Summary Updated
2009-04-22 12:03 Updated by: kazatoh
  • Status Update from Open to Closed
  • Resolution Update from None to Fixed
  • Ticket Close date is changed to 2009-04-22 12:03
Comment

マスカットフレームワーク 2.1.0 ではコールバック関数の第一引数として maskat.event.Event オブジェクトが渡されるように仕様が変わりました。このオブジェクトの branch プロパティを設定することで画面分岐先を設定可能です。

詳しくはリリースノート 5.1「コールバックインターフェースの改善」をご参照ください。 http://sourceforge.jp/projects/maskat/releases/38708/note

5.1 コールバックインターフェースの改善

マスカットフレームワーク 2.1.0 ではイベント処理の各段階で呼び出される
コールバック関数のパラメータが変更されました。

・イベントハンドラ共通のコールバック関数 (start, finish) にはレイア
ウト上で発生したイベントの情報が渡されます。

------------------------------------------------------------------
【書式】
function callback(event)
【引数】
event : maskat.evnt.Event クラスのインスタンス。
レイアウト上で発生したイベントの情報を表します。
------------------------------------------------------------------

・リモートイベントハンドラからのコールバック関数 (before, after,
timeout) ではイベント情報に加え、リモート通信のコンテキストが渡さ
れます。

------------------------------------------------------------------
【書式】
function(event, context)
【引数】
event : maskat.evnt.Event クラスのインスタンス。
レイアウト上で発生したイベントの情報を表します。
context : maskat.event.RemoteEventContext のインスタンス。
サーバとの HTTP 通信の状態を格納しています。
------------------------------------------------------------------

・通信エラー発生時 (onErrorTele) のコールバック関数ではサーバからの
応答を XML DOM 形式で渡していましたが、他のリモートイベントからの
コールバック関数と引数を統一しました。

------------------------------------------------------------------
【書式】
function(event, context)
【引数】
event : maskat.evnt.Event クラスのインスタンス。
レイアウト上で発生したイベントの情報を表します。
context : maskat.event.RemoteEventContext のインスタンス。
サーバとの HTTP 通信の状態を格納しています。
------------------------------------------------------------------

サーバが返却した HTTP 応答が XML 形式であり、ルート要素 errors を
持つ場合にコールバック関数が実行されます。このとき、XML を自動的に
解析して第二引数 context の errorMessages プロパティにオブジェクト
の配列として格納します。

例: HTTP 応答
------------------------------------------------------------------
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8">
<errors>
<error id="ERR_100">データの登録に失敗しました。</error>
<error id="ERR_101">ID が重複しています。</error>
</errors>
------------------------------------------------------------------

ルート要素は複数の子要素 error を持つことができるため、サーバ側で
発生した複数のエラーを通知できます。また、error 要素では任意の属性
やテキスト要素を用いてエラーの内容を表現することができます。前述の
XML 文書の例では以下のように context オブジェクトが設定されます。

例: context オブジェクトに設定される内容
------------------------------------------------------------------
context.errorMessages = [
{ id: "ERR_100", message: "データの登録に失敗しました。" },
{ id: "ERR_101", message: "ID が重複しています。 }
];
------------------------------------------------------------------

後方互換性のため、第一引数 event は従来のフレームワークがコールバック
関数の引数に渡していた param オブジェクトと同じプロパティを持ちます。
これらのプロパティは今後のバージョンで非推奨として廃止する予定のため、
新たに開発するアプリケーションでは新しい形式でコールバック関数を記述し
てください。

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login