jp.terasoluna.fw.web.struts.action
クラス RequestProcessorEx

java.lang.Object
  上位を拡張 org.apache.struts.action.RequestProcessor
      上位を拡張 org.springframework.web.struts.DelegatingRequestProcessor
          上位を拡張 jp.terasoluna.fw.web.struts.action.RequestProcessorEx

public class RequestProcessorEx
extends org.springframework.web.struts.DelegatingRequestProcessor

DelegatingRequestProcessor拡張クラス。

クライアントからのリクエストを捕捉し、URIに応じたアクションの起動などを行う。 org.springframework.web.struts.DelegatingRequestProcessorを継承して、 以下の機能を追加している。

  1. "_"で始まる アクションフォーム名のセッション内唯一性の保証
  2. セッションスコープのアクションフォーム論理名が "_"で始まっていた場合、 インスタンスを作成するときに、セッションに格納されている 他のアクションフォームの論理名が、"_" で始まるものはすべて削除される。 これにより、セッションでは最大でも1つのアクションフォー ムだけ生成されることが保証され、セッションスコープの アクションフォーム削除処理を記述しなくても、 実用上問題ないメモリ使用量に押さえることができる。

    struts-config.xmlのアクションフォーム指定例
     <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>
     
  3. フォーム反映抑止機能
  4. ビジネスロジック実行結果を反映したアクションフォームから フォームが切り替わっていない場合は、processPopulate()をスキップする。

  5. アクションフォームのエラー保持
  6. 入力チェックエラーがあった場合は、ポップアップ画面にエラーを 表示させるため、アクションフォームにアクションエラーを保存する。 エラーが発生していないときは、空のアクションエラーをアクション フォームに設定する。

  7. 例外発生時のログ出力機能
  8. RequestProcessor#process()内で例外がスローされた時、 例外スタックトレースをログに出力する。 ログ出力後、発生した例外はServletExceptionにラップされ、スローされる。

RequestProcessorExを利用するためには、struts-config.xmlの <controller>要素のprocessorClass属性に設定が必要である。

struts-config.xmlの設定例
 <struts-config>
   ・・・
   <controller processorClass=
       "jp.terasoluna.fw.web.struts.RequestProcessorEx"/>
   ・・・
 </struts-config>
 
フォーム抑止機能の詳細については、ActionExを参照のこと。

関連項目:
ActionEx, FormEx

フィールドの概要
private static org.apache.commons.logging.Log log
          ログクラス。
static java.lang.String SKIP_POPULATE
          processPopulate()をスキップするフラグをリクエストに設定するときのキー。
 
クラス org.apache.struts.action.RequestProcessor から継承されたフィールド
actions, INCLUDE_PATH_INFO, INCLUDE_SERVLET_PATH, moduleConfig, servlet
 
コンストラクタの概要
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のアクションフォームへのリクエストパラメータ反映処理を拡張する。
 
クラス org.springframework.web.struts.DelegatingRequestProcessor から継承されたメソッド
determineActionBeanName, getDelegateAction, getWebApplicationContext, init, initWebApplicationContext, processActionCreate
 
クラス org.apache.struts.action.RequestProcessor から継承されたメソッド
destroy, doForward, doInclude, getInternal, getServletContext, internalModuleRelativeForward, internalModuleRelativeInclude, log, log, processActionPerform, processCachedMessages, processContent, processException, processForward, processForwardConfig, processInclude, processLocale, processMapping, processMultipart, processNoCache, processPath, processPreprocess, processRoles, processValidate
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private static org.apache.commons.logging.Log log
ログクラス。


SKIP_POPULATE

public static final java.lang.String SKIP_POPULATE
processPopulate()をスキップするフラグをリクエストに設定するときのキー。

関連項目:
定数フィールド値
コンストラクタの詳細

RequestProcessorEx

public RequestProcessorEx()
メソッドの詳細

process

public void process(javax.servlet.http.HttpServletRequest req,
                    javax.servlet.http.HttpServletResponse res)
             throws java.io.IOException,
                    javax.servlet.ServletException
StrutsのHTTPリクエスト処理を拡張する。

StrutsのActionServletのprocess()メソッドでスローされた例外は SystemExceptionを含めてこのメソッドでキャッチされる。 そして、例外の内容とセッションIDのハッシュ値がログ出力された後、 ServletExceptionにラップされてスローされる。

オーバーライド:
クラス org.apache.struts.action.RequestProcessor 内の process
パラメータ:
req - HTTPリクエスト
res - HTTPレスポンス
例外:
java.io.IOException - IO例外
javax.servlet.ServletException - サーブレット例外

processActionForm

protected org.apache.struts.action.ActionForm processActionForm(javax.servlet.http.HttpServletRequest req,
                                                                javax.servlet.http.HttpServletResponse res,
                                                                org.apache.struts.action.ActionMapping mapping)
Strutsのアクションフォーム取得処理を拡張する。

アクションマッピングで指定されたアクションフォーム名が、 "_"で始まってるアクションフォームの場合は、 processActionFormEx()に処理を委譲する。

オーバーライド:
クラス org.apache.struts.action.RequestProcessor 内の processActionForm
パラメータ:
req - HTTPリクエスト
res - HTTPレスポンス
mapping - アクションマッピング
戻り値:
ActionForm アクションフォーム

processActionFormEx

protected org.apache.struts.action.ActionForm processActionFormEx(javax.servlet.http.HttpServletRequest req,
                                                                  javax.servlet.http.HttpServletResponse res,
                                                                  ActionMappingEx mapping)
Strutsのアクションフォーム取得処理を拡張する。 processActionForm()から呼ばれる。

アクションマッピングで指定されたアクションフォーム名が、 "_"で始まってるアクションフォームを処理する。

アクションフォームの処理後、 RequestProcessorのprocessPopulate()メソッドを起動する。

パラメータ:
req - HTTPリクエスト
res - HTTPレスポンス
mapping - アクションマッピング
戻り値:
アクションフォーム

processPopulate

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
Strutsのアクションフォームへのリクエストパラメータ反映処理を拡張する。

ビジネスロジック実行結果を反映したアクションフォームから 切り換わっている場合は、 RequestProcessorのprocessPopulate()メソッドを起動する。

struts-config.xmlのアクションマッピング設定時、 cancelPopulateをtrue にした場合、 processPopulate がキャンセルされる。

オーバーライド:
クラス org.apache.struts.action.RequestProcessor 内の processPopulate
パラメータ:
req - HTTPリクエスト
res - HTTPレスポンス
form - アクションフォーム
mapping - アクションマッピング
例外:
javax.servlet.ServletException - サーブレット例外