|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjp.co.fujitsu.reffi.client.nexaweb.action.AbstractAction
jp.co.fujitsu.reffi.client.nexaweb.action.BaseAction
public class BaseAction
[概 要]
イベント発生時、コントローラによって起動されるActionの基底クラスです。[詳 細]
BaseController.bind(EventBinder)
によって登録したイベントに対応して
このクラスの継承アクションクラスが起動されます。prepare(ParameterMapping)
validators(List)
, AbstractAction.validationFault(ValidateErrors)
reserveModels(List)
, nextModel(int, ModelProcessEvent, Model)
successForward(int, Model, Object)
failureForward(int, Model, Exception)
[備 考]
上記のようにこの基底クラスは、処理フローを実装して開発手順の型決めを行っています。DispatchAction
を、FlexibleAction
を基底クラスとして選択して下さい。
使用例)
・典型的なBaseAction継承アクション
package demo.client.form.action; import java.util.List; import jp.co.fujitsu.reffi.client.nexaweb.action.BaseAction; import jp.co.fujitsu.reffi.client.nexaweb.model.HTTPRequestCore; import jp.co.fujitsu.reffi.client.nexaweb.model.Model; public class OpenPostalWindowAction extends BaseAction { // ①前準備処理を実装します @Override protected boolean prepare(ParameterMapping parameterMapping) throws Exception { System.out.println("サーバからpostal.xalを取得してクライアント画面にレンダリングします"); return true; } // ②機能モデルを登録します @Override protected void reserveModels(List・一回目の通信結果に応じて二回目の通信を振り分ける> models) { models.add(HTTPRequestCore.class); } // ③コントローラによってインスタンス化された機能モデルの設定を行います @Override public void nextModel(int index, Model prev, Model next) throws Exception{ switch(index){ case 0: // サーバロジックは任意 ((HTTPRequestCore)next).setRequestUrl("webcontroller"); ((HTTPRequestCore)next).addUrlParameters("forward.page", "/pages/postal.xal"); break; } } // ④機能モデルの正常終了処理結果をハンドリングします @Override public void successForward(int index, Model model, Object result) throws Exception { System.out.println("postal.xal受信、レンダリング正常終了"); } // ⑤´機能モデルの異常終了処理結果をハンドリングします @Override public Exception failureForward(int index, Model model, Exception e) { System.out.println("異常終了"); } }
package demo.client.distribute.action; import java.util.List; import jp.co.fujitsu.reffi.client.nexaweb.action.BaseAction; import jp.co.fujitsu.reffi.client.nexaweb.model.HTTPRequestCore; import jp.co.fujitsu.reffi.client.nexaweb.model.Model; import demo.share.dao.DataDao; public class distributeLogicAction extends BaseAction { @Override protected void reserveModels(List> models) { models.add(HTTPRequestCore.class); models.add(HTTPRequestCore.class); } @Override public void nextModel(int index, Model prev, Model next) throws Exception{ // サーバロジックは任意 ((HTTPRequestCore)next).setRequestUrl("webcontroller"); switch(index){ case 0: ((HTTPRequestCore)next).addUrlParameters("model.fqcn", "demo.server.model.FetchDataModel"); break; case 1: DataDao dao = (DataDao)prev.getResult(); int div = dao.getDivision(); // 一回目の通信結果を判断して実行するサーバロジックを切り替える if(div == 0) { ((HTTPRequestCore)next).addUrlParameters("model.fqcn", "demo.server.model.Div0Model"); }else { ((HTTPRequestCore)next).addUrlParameters("model.fqcn", "demo.server.model.Div1Model"); } } } }
[環 境] JDK 6.0 Update 11
Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.
コンストラクタの概要 | |
---|---|
BaseAction()
|
メソッドの概要 | |
---|---|
void |
complete()
[概 要] reserveModelsで登録されたモデル群が全て終了した契機でコールされます. |
Exception |
failureForward(int index,
Model model,
Exception e)
[概 要] モデル処理が異常終了した契機でコントローラにコールバックされるメソッドです。 |
protected boolean |
isRunModelsAndNoWait()
[概 要] モデル群実行を非シーケンシャルに行うかどうかを設定するメソッドです。 |
boolean |
nextModel(int index,
ModelProcessEvent prev,
Model next)
[概 要] 予約モデルがコントローラによって実行される直前にコールバックされるメソッドです。 |
protected boolean |
prepare(ParameterMapping parameterMapping)
[概 要] BaseAction内で最初にテンプレートコールされるメソッドです。 |
protected void |
reserveModels(List<Class<? extends Model>> models)
[概 要] Action処理終了後、コントローラに実行させるモデルクラス群の予約を行います。 |
ParameterMapping |
run(ParameterMapping parameterMapping)
[概 要] コントローラにコールされるアクションの主幹メソッドです。 |
void |
successForward(int index,
Model model,
Object result)
[概 要] モデル処理が正常終了した契機でコントローラにコールバックされるメソッドです。 |
protected Exception |
trap(Exception e)
[概 要] Action内で発生した例外をハンドリングします。 |
protected void |
validators(List<CustomValidator> validators)
[概 要] バリデータ群を登録するメソッドです。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public BaseAction()
メソッドの詳細 |
---|
public ParameterMapping run(ParameterMapping parameterMapping) throws Exception
[概 要]
コントローラにコールされるアクションの主幹メソッドです。[詳 細]
継承クラスから情報を収集してコントローラに返却します。 以下の順にテンプレートメソッドがコールされます。prepare(ParameterMapping)
: 前準備の実装、クライアント完結コードの実装validators(List)
: バリデータオブジェクトの登録AbstractAction.validate(List)
: バリデーションの実行AbstractAction.validationFault(ValidateErrors)
: バリデーションエラーハンドリングreserveModels(List)
: 実行モデルの登録上記のコールフロー終了後、ParameterMappingオブジェクトがコントローラに返却されます。
prepare実装メソッドでfalseを返却した場合、又はvalidateメソッドが一つでも
ValidateErrorオブジェクトを返却した場合、
コントローラに返却されるParameterMappingオブジェクトはnullになります。
nullのParameterMappingを受け取ったコントローラは以降の処理を中止します。
[備 考]
このメソッドを実装する必要は有りません。
Action
内の run
AbstractAction
内の run
parameterMapping
- MVC各レイヤを伝播するパラメータオブジェクト
Exception
- アクション実行例外protected boolean prepare(ParameterMapping parameterMapping) throws Exception
[概 要]
BaseAction内で最初にテンプレートコールされるメソッドです。[詳 細]
デフォルト処理は有りません。 オーバーライド先でfalseを返却すると、それ以降のアクション処理は行われません。[備 考]
単純なDOM操作等、クライアント内で完結するようなイベント処理や、 条件を判断して以降の処理を実行しない、等の処理を実装する場合は、 このメソッドをオーバーライドして処理を記述して下さい。使用例)
@Override protected boolean prepare(ParameterMapping parameterMapping) throws Exception { // 発言欄が空の状態で送信ボタンが押下された場合は送信しない String chatRemark = getElementValueByName("chat.chatRemark").getElementValue(0).getValue(); if(chatRemark.length() == 0){ return false; }else{ return true; } }
parameterMapping
- MVC各レイヤを伝播するパラメータオブジェクト
Exception
protected void reserveModels(List<Class<? extends Model>> models)
[概 要]
Action処理終了後、コントローラに実行させるモデルクラス群の予約を行います。[詳 細]
デフォルト処理は有りません。[備 考]
Model I/Fを継承して自作モデルクラスを作成し、登録することが出来ますが、 HTTPリクエスト、Pub/Subといった使用頻度の高い機能モデルについては Reffi F/Wでも提供しています。詳しくはmodelパッケージを参照して下さい。
models
- 実行するモデルクラスを格納するリストオブジェクトpublic boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception
[概 要]
予約モデルがコントローラによって実行される直前にコールバックされるメソッドです。[詳 細]
reserveModelsで登録したモデル数+1回、コントローラによって呼び出されます。
isRunModelsAndNoWait()
がfalseの場合、次回モデルの実行が
前回モデルの終了後であることが確約される為、prevの結果を元にnextの動作設定をすることが出来ます。
[備 考]
isRunModelsAndNoWait()
がtrueの場合、コントローラはモデルの実行を
シーケンシャルには行いません。
index
- 実行インデックス(0 ~ reserveModelsによるモデル登録数)prev
- 前インデックスで実行されたモデル処理結果イベントnext
- 次インデックスで実行される予定のモデルインスタンス
Exception
- オーバーライド先で発生する可能性の有る例外protected void validators(List<CustomValidator> validators)
[概 要]
バリデータ群を登録するメソッドです。[詳 細]
[備 考]
validators
- CustomValidator継承クラスを追加するリストオブジェクトprotected boolean isRunModelsAndNoWait()
[概 要]
モデル群実行を非シーケンシャルに行うかどうかを設定するメソッドです。[詳 細]
デフォルトではfalseを返却します。reserveModels(List)
によって予約されたモデル群を
コントローラが実行する時、1モデルの結果取得を待ってから次モデルを
実行するかどうかの設定値として解釈されます。[備 考]
public void successForward(int index, Model model, Object result) throws Exception
[概 要]
モデル処理が正常終了した契機でコントローラにコールバックされるメソッドです。[詳 細]
コントローラが実行した機能モデルの数分コールバックされます。
モデルの処理結果は第三引数resultから取得しますが、実行したモデルの種類によって、
resultの実体(型)が異なります。
フレームワークが提供する以下の代表的なモデルは、次のようにresultを返却します。
HTTPRequestCore
SubscribeCore
[備 考]
機能モデルによって変換される前の処理結果を取得する場合は、以下のように取得可能です。
index
- 結果を返却したモデルの実行インデックスmodel
- 結果を返却したモデルインスタンスresult
- モデル処理結果オブジェクト
Exception
public Exception failureForward(int index, Model model, Exception e)
[概 要]
モデル処理が異常終了した契機でコントローラにコールバックされるメソッドです。[詳 細]
コントローラに実行されたモデルが例外を発生させた場合、コールバックされます。
戻り値Exceptionは最終的にコントローラにキャッチ
(BaseController.trap(Throwable)
)されます。
nullを返却すると、上記のコントローラによるキャッチは発生しません。
[備 考]
index
- 結果を返却したモデルの実行インデックスmodel
- 結果を返却したモデルインスタンスe
- モデル異常終了時の例外オブジェクト
public void complete()
[概 要]
reserveModelsで登録されたモデル群が全て終了した契機でコールされます.[詳 細]
reserveModelsで登録された全モデルがfireModelFinishedを発行 した契機でコントローラによってコールバックされます。[備 考]
protected Exception trap(Exception e)
[概 要]
Action内で発生した例外をハンドリングします。[詳 細]
デフォルト処理は有りません。[備 考]
e
- アクション内で発生した例外
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |