WebObjects 5.2.3

com.webobjects.appserver
Class WODirectAction

java.lang.Object
  extended bycom.webobjects.appserver.WOAction
      extended bycom.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 } }


Nested Class Summary
 
Nested classes inherited from class com.webobjects.foundation.NSKeyValueCoding
NSKeyValueCoding.DefaultImplementation, NSKeyValueCoding.ErrorHandling, NSKeyValueCoding.Null, NSKeyValueCoding.UnknownKeyException, NSKeyValueCoding.Utility, NSKeyValueCoding.ValueAccessor
 
Nested classes inherited from class com.webobjects.foundation.NSKeyValueCodingAdditions
NSKeyValueCodingAdditions.DefaultImplementation, NSKeyValueCodingAdditions.Utility
 
Nested classes inherited from class com.webobjects.foundation.NSValidation
NSValidation.DefaultImplementation, NSValidation.Utility, NSValidation.ValidationException
 
Field Summary
static String actionText
           
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCoding
NullValue
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCodingAdditions
KeyPathSeparator
 
Constructor Summary
WODirectAction(WORequest aRequest)
          Subclasses must override to provide any additional initialization.
 
Method Summary
 WOActionResults defaultAction()
 "Main"という名前のページにgenerateResponse() を送った時の結果のWOActionResultsオブジェクトを返します。
 String getSessionIDForRequest(WORequest aRequest)
 セッションIDを返します。存在しない場合nullです。
 WOActionResults performActionNamed(String anActionName)
 指定された名前でアクションを実行し、そのアクションの結果を返します。
 void takeFormValueArraysForKeyArray(NSArray aKeyArray)
 レシーバの要求からの値を使い、aKeyArray内の各キー上でtakeValueForKeyを実行します。
 void takeFormValuesForKeyArray(NSArray aKeyArray)
 レシーバの要求からの値を使い、aKeyArray内の各キー上でtakeValueForKeyを実行します。
 
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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.webobjects.foundation.NSKeyValueCoding
takeValueForKey, valueForKey
 
Methods inherited from interface com.webobjects.foundation.NSKeyValueCoding.ErrorHandling
handleQueryWithUnboundKey, handleTakeValueForUnboundKey, unableToSetNullForKey
 
Methods inherited from interface com.webobjects.foundation.NSKeyValueCodingAdditions
takeValueForKeyPath, valueForKeyPath
 
Methods inherited from interface com.webobjects.foundation.NSValidation
validateTakeValueForKeyPath, validateValueForKey
 

Field Detail

actionText

public static final String actionText
Constructor Detail

WODirectAction

public WODirectAction(WORequest aRequest)
サブクラスは、あらゆる追加の初期化を提供するためにオーバーライドする必要があります。

パラメータ:
aRequest - 指定された要求に対する新しいコンテキスト・オブジェクト
Method Detail

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)

Last updated Thu Oct 21 15:04:16 PDT 2004.

Copyright © 2004 Apple Computer, Inc.