|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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で登録されたモデル群が全て終了した契機でコールされます. |
java.lang.Exception |
failureForward(int index,
Model model,
java.lang.Exception e)
[概 要] モデル処理が異常終了した契機でコントローラにコールバックされるメソッドです。 |
protected boolean |
isRunModelsAndNoWait()
[概 要] モデル群実行を非シーケンシャルに行うかどうかを設定するメソッドです。 |
boolean |
nextModel(int index,
ModelProcessEvent prev,
Model next)
[概 要] 予約モデルがコントローラによって実行される直前にコールバックされるメソッドです。 |
protected boolean |
prepare(ParameterMapping parameterMapping)
[概 要] BaseAction内で最初にテンプレートコールされるメソッドです。 |
protected void |
reserveModels(java.util.List<java.lang.Class<? extends Model>> models)
[概 要] Action処理終了後、コントローラに実行させるモデルクラス群の予約を行います。 |
ParameterMapping |
run(ParameterMapping parameterMapping)
[概 要] コントローラにコールされるアクションの主幹メソッドです。 |
void |
successForward(int index,
Model model,
java.lang.Object result)
[概 要] モデル処理が正常終了した契機でコントローラにコールバックされるメソッドです。 |
protected java.lang.Exception |
trap(java.lang.Exception e)
[概 要] Action内で発生した例外をハンドリングします。 |
protected void |
validators(java.util.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 java.lang.Exception
[概 要]
コントローラにコールされるアクションの主幹メソッドです。[詳 細]
継承クラスから情報を収集してコントローラに返却します。 以下の順にテンプレートメソッドがコールされます。prepare(ParameterMapping) : 前準備の実装、クライアント完結コードの実装validators(List) : バリデータオブジェクトの登録AbstractAction.validate(List) : バリデーションの実行AbstractAction.validationFault(ValidateErrors) : バリデーションエラーハンドリングreserveModels(List) : 実行モデルの登録上記のコールフロー終了後、ParameterMappingオブジェクトがコントローラに返却されます。
prepare実装メソッドでfalseを返却した場合、又はvalidateメソッドが一つでも
ValidateErrorオブジェクトを返却した場合、
コントローラに返却されるParameterMappingオブジェクトはnullになります。
nullのParameterMappingを受け取ったコントローラは以降の処理を中止します。
[備 考]
このメソッドを実装する必要は有りません。
Action 内の runAbstractAction 内の runparameterMapping - MVC各レイヤを伝播するパラメータオブジェクト
java.lang.Exception - アクション実行例外
protected boolean prepare(ParameterMapping parameterMapping)
throws java.lang.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各レイヤを伝播するパラメータオブジェクト
java.lang.Exceptionprotected void reserveModels(java.util.List<java.lang.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 java.lang.Exception
[概 要]
予約モデルがコントローラによって実行される直前にコールバックされるメソッドです。[詳 細]
reserveModelsで登録したモデル数+1回、コントローラによって呼び出されます。
isRunModelsAndNoWait()がfalseの場合、次回モデルの実行が
前回モデルの終了後であることが確約される為、prevの結果を元にnextの動作設定をすることが出来ます。
[備 考]
isRunModelsAndNoWait()がtrueの場合、コントローラはモデルの実行を
シーケンシャルには行いません。
index - 実行インデックス(0 ~ reserveModelsによるモデル登録数)prev - 前インデックスで実行されたモデル処理結果イベントnext - 次インデックスで実行される予定のモデルインスタンス
java.lang.Exception - オーバーライド先で発生する可能性の有る例外protected void validators(java.util.List<CustomValidator> validators)
[概 要]
バリデータ群を登録するメソッドです。[詳 細]
[備 考]
validators - CustomValidator継承クラスを追加するリストオブジェクトprotected boolean isRunModelsAndNoWait()
[概 要]
モデル群実行を非シーケンシャルに行うかどうかを設定するメソッドです。[詳 細]
デフォルトではfalseを返却します。reserveModels(List)によって予約されたモデル群を
コントローラが実行する時、1モデルの結果取得を待ってから次モデルを
実行するかどうかの設定値として解釈されます。[備 考]
public void successForward(int index,
Model model,
java.lang.Object result)
throws java.lang.Exception
[概 要]
モデル処理が正常終了した契機でコントローラにコールバックされるメソッドです。[詳 細]
コントローラが実行した機能モデルの数分コールバックされます。
モデルの処理結果は第三引数resultから取得しますが、実行したモデルの種類によって、
resultの実体(型)が異なります。
フレームワークが提供する以下の代表的なモデルは、次のようにresultを返却します。
HTTPRequestCore
SubscribeCore
[備 考]
機能モデルによって変換される前の処理結果を取得する場合は、以下のように取得可能です。
index - 結果を返却したモデルの実行インデックスmodel - 結果を返却したモデルインスタンスresult - モデル処理結果オブジェクト
java.lang.Exception
public java.lang.Exception failureForward(int index,
Model model,
java.lang.Exception e)
[概 要]
モデル処理が異常終了した契機でコントローラにコールバックされるメソッドです。[詳 細]
コントローラに実行されたモデルが例外を発生させた場合、コールバックされます。
戻り値Exceptionは最終的にコントローラにキャッチ
(BaseController.trap(Throwable))されます。
nullを返却すると、上記のコントローラによるキャッチは発生しません。
[備 考]
index - 結果を返却したモデルの実行インデックスmodel - 結果を返却したモデルインスタンスe - モデル異常終了時の例外オブジェクト
public void complete()
[概 要]
reserveModelsで登録されたモデル群が全て終了した契機でコールされます.[詳 細]
reserveModelsで登録された全モデルがfireModelFinishedを発行 した契機でコントローラによってコールバックされます。[備 考]
protected java.lang.Exception trap(java.lang.Exception e)
[概 要]
Action内で発生した例外をハンドリングします。[詳 細]
デフォルト処理は有りません。[備 考]
e - アクション内で発生した例外
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||