com.webobjects.appserver
Class WODirectAction
java.lang.Object
com.webobjects.appserver.WOAction
com.webobjects.appserver.WODirectAction
- All Implemented Interfaces:
- NSKeyValueCoding, NSKeyValueCoding.ErrorHandling, NSKeyValueCodingAdditions, NSValidation
- Direct Known Subclasses:
- D2WActions, WOAdminAction, WOEventDisplay, WOEventSetup, WOProjectBuilderAction, WOStats
- public class WODirectAction
- extends WOAction
- implements NSKeyValueCoding, NSKeyValueCoding.ErrorHandling, NSKeyValueCodingAdditions, NSValidation
WODirectActionはダイレクト・アクション・クラスのインタフェースを定義する抽象型クラスです。デベロッパーはWODirectActionをサブクラスにして、アクション・メソッドのレポジトリであるオブジェクトを提供します。
WODirectAction はWebObjectsアプリケーションに対して、ロジックとカスタム・コードを追加する最も簡単なインタフェースを提供します。クライアントのブラウザから要求されたURLがWebObjectsアプリケーションに送られると、WODirectAction オブジェクトのインスタンスが作成されます。WODirectActionRequestHandler が、起動する適切なクラスとアクションを決定し、その後WODirectActionサブクラスにコントロールを渡します。
WOComponentベースのアクションとは対照的に、ダイレクト・アクションではURLをみればメソッドなどの機能が類推されます。たとえば、次のURLはfindEmployeeActionメソッドをCommonと呼ばれるWODirectActionのサブクラス上で呼び出します。
http://localhost/cgi-bin/WebObjects/Myapp.woa/wa/Common/findEmployee
WODirectActionのサブクラスは、アクション・メソッドのレポジトリです。WebObjectsアプリケーションには、DirectActionと呼ばれるWODirectActionサブクラスのデフォルト実装が含まれています。DirectAction クラスはURLに指定されたクラスがないときに使用されます。
ここに、それらが起動するURLとアクションの一部を要約します:
This URL... | Invokes this method... |
.../MyApp.woa/wa/ | クラスDirectAction上のdefaultAction |
.../MyApp.woa/wa/find |
存在する場合はクラスDirectAction上のfindAction、それ以外のクラス上ではdefaultAction |
.../MyApp.woa/wa/find/ | ../MyApp.woa/wa/find に同じ |
.../MyApp.woa/wa/Common/find | クラスCommon上のfindAction |
.../MyApp.woa/wa/Common/ |
存在する場合はクラスDirectAction上のCommonAction、それ以外のクラス上ではdefaultAction |
WODirectActionRequestHandlerはWODirectActionのサブクラス上でのみメソッドを起動します。指定されたクラスまたはアクションが存在しないときは、WODirectActionRequestHandler が例外をスローします。
有効でない可能性のあるセッションID(例えばcookieやすでにないセッションを参照しているようなID)を扱う場合、ダイレクトアクションメソッドの最初に以下のコードを書いてください。
public WOActionResults myAction() {
if ( getSessionIDForRequest(request()) != null && existingSession() == null ) {
// special behavior, like a returning a login page, e.g. return pageWithName("LoginPage");
} else {
// whatever else you'd normally do here
}
}
Constructor Summary |
WODirectAction(WORequest aRequest)
Subclasses must override to provide any additional initialization. |
Methods inherited from class com.webobjects.appserver.WOAction |
canAccessFieldsDirectly, context, debugString, existingSession, handleQueryWithUnboundKey, handleTakeValueForUnboundKey, initializeRequestSessionIDInContext, languages, logString, pageWithName, request, session, setLanguages, takeValueForKey, takeValueForKeyPath, toString, unableToSetNullForKey, validateTakeValueForKeyPath, validateValueForKey, valueForKey, valueForKeyPath |
actionText
public static final String actionText
WODirectAction
public WODirectAction(WORequest aRequest)
- サブクラスは、あらゆる追加の初期化を提供するためにオーバーライドする必要があります。
- パラメータ:
- aRequest - 指定された要求に対する新しいコンテキスト・オブジェクト
defaultAction
public WOActionResults defaultAction()
- "Main"という名前のページにgenerateResponse() を送った時の結果のWOActionResultsオブジェクトを返します。
- 戻り値:
- 生成された応答を含むWOActionResults
getSessionIDForRequest
public String getSessionIDForRequest(WORequest aRequest)
- セッションIDを返します。ない場合はnull。最初にaRequestのセッションIDを検索し、なければcookieを見に行きます。
- 特定:
getSessionIDForRequest
in class WOAction
- パラメータ:
aRequest
- リクエスト
- 戻り値:
- リクエストのセッションID、またはnull
performActionNamed
public WOActionResults performActionNamed(String anActionName)
- 指定された名前でアクションを実行し、そのアクションの結果を戻します。デフォルト実装は"Action" をanActionNameに追加し、結果のメソッド名の起動を試みます。アクションのディスパッチ方法を変更するためには、このメソッドをオーバーライドします。
- 特定:
performActionNamed
in class WOAction
- パラメータ:
anActionName
- アクションの名前
- 戻り値:
- ダイレクト・アクションの結果を含むWOActionResults
takeFormValueArraysForKeyArray
public void takeFormValueArraysForKeyArray(NSArray aKeyArray)
- レシーバの要求からの値を使いaKeyArray内の各キー上で、takeValueForKeyを実行します。
このメソッドは各フォームの値にNSArrayを使います。これは、WOBrowserなどのように、ユーザがフォームの値に複数のアイテムを選択できる場合に役立ちます。フォーム値が1つのアイテムのみを含む場合には、このメソッドは1つのオブジェクトでNSArrayを使用します。単一のオブジェクトをフォームの値として使うためにはtakeFormValuesForKeyArrayを使用します。
- パラメータ:
aKeyArray
-キーの配列
- 参照:
WOAction.takeValueForKey(Object value, String key)
,
takeFormValuesForKeyArray(NSArray aKeyArray)
takeFormValuesForKeyArray
public void takeFormValuesForKeyArray(NSArray aKeyArray)
- レシーバの要求からの値を使いaKeyArray内の各キー上で、 takeValueForKeyを実行します。このメソッドは各フォーム値に単一のオブジェクトを使用します。WOBrowserのように、フォーム値が1つ以上のアイテムを含む場合には、このメソッドは配列の最初のアイテムを使用します。オブジェクトの配列をフォーム値として使用するためには、takeFormValueArraysForKeyArrayを使用します。
- パラメータ:
aKeyArray
- キーの配列
- See Also:
WOAction.takeValueForKey(Object value, String key)
,
takeFormValueArraysForKeyArray(NSArray aKeyArray)
Copyright © 2004 Apple Computer, Inc.