2008-07-01から1ヶ月間の記事一覧

ExecuteAction

Actionを実行する。Validationに引っかかった場合、Actionクラスを用意できなかった場合は何もしない。Actionを実行したらActionContextに戻り値のForwardConfigをセットして次へ。

contextClassLoaderって?

よくわからないのだけれども。 同じスレッド(またはコンテキスト・文脈)の中では同じクラスローダーを使ってクラスをロードして欲しいことがある。たとえばHotDeploy中はHotDeployClassLoaderにクラスをロードして欲しいだろう。そんなときに Class.class.…

CreateAction

Validationに失敗していいなければ、typeActionを作成、キャッシュする。typeもforwardもincludeも設定していない場合、ログにエラーが表示される。 キャッシュはApplicationスコープにModule(struts-config.xml相当?)ごとに保持される。 Actionの生成は…

PerformInclude

ここまででActionContextにincludeが設定されていれば、includeに設定されたServletやJSPなどに処理を渡す(Actionが実行されない)。実態はforward。「include」って名前がまぎらわしい…。 処理を渡した場合、チェーンはここで終了。 includeには絶対パス、…

SelectForward

にforwardを設定した場合、そこからForwardConfigを作成してActionContextにセットする。forwardはコンテキスト相対パス。例によってValidationにひっかかったばあいは実行しない。 なおでforwardまたはincludeを設定した場合、type属性に指定したActionはイ…

ExecuteCommand

タグに設定したcommandを実行する。設定していなければ何もしない。

ExecuteCommand

Validationに引っかかっていなければ、Actionを実行するためのチェーンを探して実行します。 チェーン名はActionConfig.commandに格納されているらしいけど…? 例のごとくカタログ名、コマンド名で取得。

SelectInclude

にinclude属性が指定されていた場合、その値をActionContextにセットします。 includeはRequestDispatcher.include()によって呼び出されるJSP等のコンテキスト相対パスです。

SelectInput

Validatoionでエラーになった場合にどこに遷移するかを決める。遷移はまだしない。 コントローラエレメントのinputForwardがtrueの場合、input属性の値がActionForwardの名前になり、falseの場合相対パスになる。

ValidateActionForm

Validationを行う。MultipartRequestの場合はrollback()も呼んでファイルアップロードの後始末をしたりする(すでにディスクに書き込んだファイルを削除するとか)。

PopulateActionForm

ActionFormをリセットする。MultipartRequestならリクエストを処理するためのMultipartRequestHandlerクラス名を適切なスコープにセットする。直後にRequestUtilsがMultipartRequestを処理するために使う。 次にRequestからActionFormにプロパティをセットす…

FormBeanConfig

canReuse このFormBeanConfigがDynaBeanを表す場合は、引数のActionFormとDynaClass名が同じなら再利用可能。じゃあDynaClass名が違うのってどんな場合だよ?って思うけど、謎。手動で違うFormに差し替えることがあるのか? 次はこのFormBeanConfigがDynaBea…

CreateActionForm

別にFormは必須ではない。ActionConfigからFormConfig名を探してModuleConfigからFormBeanConfigを取得。Formのスコープ(ActionConfigから取得)に応じてSessionまたはRequestからFormインスタンスを取得し、再利用可能なら再利用、不能なら再生成してActio…

AuthorizeAction

サーブレットコンテナの認証機能(HttpServletRequest.isUserInRole(String))を利用し、権限のないユーザをはじく。権限はAction毎に設定される。

SelectAction

リクエストしたパスに応じたAction(ActionConfig)を選択します。呼び出しはしません。もしActionが見つからなければ見つからなかった場合によぶActionを選択します(あれば)。 getPath まずは拡張パスを取得する。拡張パスがなければサーブレットパスを取…

RemoveCachedMessages

SessionスコープにGlobals.MESSAGE_KEYとGlobals.ERROR_KEYで登録されているActionMessagesがすでに表示後であれば除去します。

SetContentType

ControllerConfigのcontentTypeがnullでない場合、ResponseのヘッダーにContentTypeを埋め込みます。

RequestNooCache

ControllerConfigのnoCacheがtrueの場合、Responseのヘッダーにキャッシュを利用しないようにするパラメータを埋め込みます。

SetOriginalURI

リクエストで要求された元々のURIをリクエストにセットします。セットされるのはRequest#getServletPathです。

SelectLocale

SessionとActionContextにロケールをセットします。ただし、ControllerConfigのlocalがfalseの場合、ロケールを自動的にセットする必要なしと判断され、セットされなくなります。ロケールの取得順位はSession#getAttribute、Request#getLocale、Locale#getDe…

CatalogFactory

カタログを登録します。デフォルトカタログも登録できます。 getCommand 「カタログ名:コマンド名」または「コマンド名」の形式でコマンドを取得できます。ChainもCommandインターフェースを継承しているのでこれで取得します。 getInstance クラスローダ毎…

ExceptionCatcher extends ActionCommandBase implements Filter

execute ActionContextが保持している例外をクリアして後続のCommandを実行。 postprocess 後続のCommandで例外が発生したら例外処理チェーンに処理させます。発生した例外はActionContextにセットして例外処理チェーンに渡します。

Fileter extends Command

Commandにpostprocessを追加。 postprocess チェーンを実行し終わった後、リソースを開放するなどの後処理を行うためのメソッド。チェーン内で例外が発生しても実行されることが保証されている。引数のExceptionはCommand#execute()で例外が発生した場合に渡…

ActionCommandBase implements ActionCommand

execute(Context)を実装し、execute(ActionContext)を呼び出している。

ActionCommand extends Command

ActionContextインターフェースを実装したクラスを引数にexecuteするメソッドが追加されている。

Command

Contextインターフェースを実装したクラスを引数にexecuteする。戻り値がfalseだと後続のCommandを実行し、trueだと実行せずチェーンを終了する。

コマンドを登録してチェーンを作る。dtdなし? className どうみても登録するコマンドのクラス名。 catalogName exceptionCommandのカタログ名っぽい。 exceptionCommand 例外が起こったときに処理を行うチェーン名。

タグ

勝手に新しいタグを作成できる? name属性が新しいタグ名、classNameがそのタグに対応する処理。

他のチェーンへのリンク。 catalogName nameSpaceのようなもの?chain-config.xmlのルートタグがであるからたぶんそう。でも異なるファイルに同じcatalogNameを定義できる。両方有効。 name catalog内のチェーンの名前を指定。これはと対応するのだろう。チ…

web.xmlでActionServletののchainConfigに指定。 複数いける。