public class RequestProcessorEx
extends org.springframework.web.struts.DelegatingRequestProcessor
クライアントからのリクエストを捕捉し、URIに応じたアクションの起動などを行う。 org.springframework.web.struts.DelegatingRequestProcessorを継承して、 以下の機能を追加している。
セッションスコープのアクションフォーム論理名が "_"で始まっていた場合、 インスタンスを作成するときに、セッションに格納されている 他のアクションフォームの論理名が、"_" で始まるものはすべて削除される。 これにより、セッションでは最大でも1つのアクションフォー ムだけ生成されることが保証され、セッションスコープの アクションフォーム削除処理を記述しなくても、 実用上問題ないメモリ使用量に押さえることができる。
<struts-config>
<form-beans>
<!-- フォームの先頭に"_"をつける -->
<form-bean name="_sampleForm"
type="jp.terasoluna.fw.web.struts.form.DynaValidatorActionFormEx"
>
<form-property name="companyId" type="java.lang.String" />
・・・
</struts-config>
ビジネスロジック実行結果を反映したアクションフォームから フォームが切り替わっていない場合は、processPopulate()をスキップする。
入力チェックエラーがあった場合は、ポップアップ画面にエラーを 表示させるため、アクションフォームにアクションエラーを保存する。 エラーが発生していないときは、空のアクションエラーをアクション フォームに設定する。
RequestProcessor#process()内で例外がスローされた時、 例外スタックトレースをログに出力する。 ログ出力後、発生した例外はServletExceptionにラップされ、スローされる。
RequestProcessorExを利用するためには、struts-config.xmlの <controller>要素のprocessorClass属性に設定が必要である。
<struts-config>
・・・
<controller processorClass=
"jp.terasoluna.fw.web.struts.RequestProcessorEx"/>
・・・
</struts-config>
フォーム抑止機能の詳細については、ActionExを参照のこと。
修飾子とタイプ | フィールドと説明 |
---|---|
static String |
SKIP_POPULATE
processPopulate()をスキップするフラグをリクエストに設定するときのキー。
|
コンストラクタと説明 |
---|
RequestProcessorEx() |
修飾子とタイプ | メソッドと説明 |
---|---|
void |
process(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse res)
StrutsのHTTPリクエスト処理を拡張する。
|
protected org.apache.struts.action.ActionForm |
processActionForm(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse res,
org.apache.struts.action.ActionMapping mapping)
Strutsのアクションフォーム取得処理を拡張する。
|
protected org.apache.struts.action.ActionForm |
processActionFormEx(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse res,
ActionMappingEx mapping)
Strutsのアクションフォーム取得処理を拡張する。
|
protected void |
processPopulate(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse res,
org.apache.struts.action.ActionForm form,
org.apache.struts.action.ActionMapping mapping)
Strutsのアクションフォームへのリクエストパラメータ反映処理を拡張する。
|
determineActionBeanName, getDelegateAction, getWebApplicationContext, init, initWebApplicationContext, processActionCreate
destroy, doForward, doInclude, getInternal, getServletContext, internalModuleRelativeForward, internalModuleRelativeInclude, log, log, processActionPerform, processCachedMessages, processContent, processException, processForward, processForwardConfig, processInclude, processLocale, processMapping, processMultipart, processNoCache, processPath, processPreprocess, processRoles, processValidate
public void process(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) throws IOException, javax.servlet.ServletException
StrutsのActionServletのprocess()メソッドでスローされた例外は SystemExceptionを含めてこのメソッドでキャッチされる。 そして、例外の内容とセッションIDのハッシュ値がログ出力された後、 ServletExceptionにラップされてスローされる。
process
クラス内 org.apache.struts.action.RequestProcessor
req
- HTTPリクエストres
- HTTPレスポンスIOException
- IO例外javax.servlet.ServletException
- サーブレット例外protected org.apache.struts.action.ActionForm processActionForm(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, org.apache.struts.action.ActionMapping mapping)
アクションマッピングで指定されたアクションフォーム名が、 "_"で始まってるアクションフォームの場合は、 processActionFormEx()に処理を委譲する。
processActionForm
クラス内 org.apache.struts.action.RequestProcessor
req
- HTTPリクエストres
- HTTPレスポンスmapping
- アクションマッピングprotected org.apache.struts.action.ActionForm processActionFormEx(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, ActionMappingEx mapping)
アクションマッピングで指定されたアクションフォーム名が、 "_"で始まってるアクションフォームを処理する。
アクションフォームの処理後、 RequestProcessorのprocessPopulate()メソッドを起動する。
req
- HTTPリクエストres
- HTTPレスポンスmapping
- アクションマッピングprotected void processPopulate(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, org.apache.struts.action.ActionForm form, org.apache.struts.action.ActionMapping mapping) throws javax.servlet.ServletException
ビジネスロジック実行結果を反映したアクションフォームから 切り換わっている場合は、 RequestProcessorのprocessPopulate()メソッドを起動する。
struts-config.xmlのアクションマッピング設定時、 cancelPopulateをtrue にした場合、 processPopulate がキャンセルされる。
processPopulate
クラス内 org.apache.struts.action.RequestProcessor
req
- HTTPリクエストres
- HTTPレスポンスform
- アクションフォームmapping
- アクションマッピングjavax.servlet.ServletException
- サーブレット例外Copyright © 2014. All Rights Reserved.