org.opengion.hayabusa.taglib

## クラス CommonForwardTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.opengion.hayabusa.taglib.CommonTagSupport
      - - org.opengion.hayabusa.taglib.CommonForwardTag

- すべての実装されたインタフェース:
    Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally

      public class CommonForwardTag
      extends CommonTagSupport

       submitタグを用いてページ転送するタグです(forward.jsp で使用)。

       通常、forward は、ページ内転送(サーバー内部での転送)のため、別画面への遷移には
       使用できません。これは、別画面では、index.jsp 等でフレーム分割する際の基準フォルダは、
       forward の場合、クライアントは理解していないため、もう一度先のフォルダに対する
       フレーム分割を行おうとするためです。
       (よく、index.jsp の frame タグに、src="../XXXX/query.jsp" などと、自分自身のフォルダ名を
       記述したページを見かけますが、これは、フォルダをまたがる転送に、forward を使用する
       為の悪い対策です。)
       実際は、forward ではなく、redirect を使うべきです。redirect は、指定のアドレス要求を、
       一旦クライアントに投げてそこから再度要求しなおしてもらう方式のため、このようにフォルダを
       またがる転送も正常に処理できます。
       この、commonForward タグでは、画面遷移の条件に応じて、forward か redirect の自動
       判定を行い、適切に処理しています。
       判定条件は、拡張子や、選択件数などを加味して以下の判定を順次テストします。

         FORWARD :
             アドレスが、 null(自分自身) か、.jsp を含み、"/" が入っていない場合
         REDIRECT:
             アドレスが、.jsp を含まないか、
             それ以外(.jsp を含み、"/" も含む)で、選択数が１件のみの場合
             もしくはuseRedirectCheck="false"の場合
         COUNT_0 :
             それ以外で、選択数が０件の場合
         COUNT_N :
             それ以外で、選択数が１件以上の場合、または、その他。

       ここで、COUNT_0 の場合は、未選択エラー、COUNT_N は、複数選択エラーを自動的に返します。

  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:commonForward />
         ●body：なし

         ●Tag定義：
           <og:commonForward
               dbkeys             【TAG】DBキーをCSV形式でセットします
               tableId            【TAG】(通常使いません)sessionから所得する DBTableModelオブジェクトの ID
               useRedirectCheck   【TAG】非選択状態の場合にforwardを許可するかどうか[true/false]を指定します(初期値:true)
               useRedirectHidden  【TAG】redirectの処理時に、hiddenパラメータを転送するかどうか[true:する/false:しない]指定します(初期値:false)。
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           />

         ●使用例
             フォワードキャッシュによりページ転送します。
             <og:commonForward dbkeys="{@dbkeys}" />

  機能分類
    画面制御
  バージョン
    4.0
  作成者
    Masaharu Endo
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    - ### クラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport

      `BR, BUFFER_MIDDLE, CR`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.BodyTagSupport

      `bodyContent`

    - ### クラスから継承されたフィールド javax.servlet.jsp.tagext.TagSupport

      `id, pageContext`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.BodyTag

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.IterationTag

      `EVAL_BODY_AGAIN`

    - ### インタフェースから継承されたフィールド javax.servlet.jsp.tagext.Tag

      `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

  - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `CommonForwardTag()` デフォルトコンストラクター

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setDbkeys(String key)` 【TAG】DBキーをCSV形式でセットします。
    `void` | `setTableId(String id)` 【TAG】(通常使いません)sessionから所得する DBTableModelオブジェクトの ID (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
    `void` | `setUseRedirectCheck(String flag)` 【TAG】非選択状態の場合にforwardを許可するかどうか[true/false]を指定します(初期値:true)。
    `void` | `setUseRedirectHidden(String flag)` 【TAG】redirectの処理時に、hiddenパラメータを転送するかどうか[true:する/false:しない]を指定します(初期値:false)。
    `String` | `toString()` このオブジェクトの文字列表現を返します。

    - ### クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doAfterBody, doCatch, doFinally, doStartTag, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheck`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.BodyTagSupport

      `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

    - ### クラスから継承されたメソッド javax.servlet.jsp.tagext.TagSupport

      `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue`

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### インタフェースから継承されたメソッド javax.servlet.jsp.tagext.Tag

      `getParent, setPageContext, setParent`

- - ### コンストラクタの詳細

    - #### CommonForwardTag

          public CommonForwardTag()

      デフォルトコンストラクター
      変更履歴:

        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### doEndTag

          public int doEndTag()

      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
        `doEndTag` インタフェース内 `Tag`
      オーバーライド:
        `doEndTag` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示
      変更履歴:

        3.3.1.1 (2003/07/03) ＵＲＬにリクエスト情報をＵＲＬエンコードして追加します。
        3.5.5.2 (2004/04/02) フォルダ外転送時は、１行以外選択は、エラーとします。
        3.5.5.3 (2004/04/09) デバッグ時は、転送しないようにします。
        3.8.0.4 (2005/08/08) requestUrlEncode 廃止
        3.8.0.8 (2005/10/03) dbkeys が null の場合に全件取得していた処理を復活します。
        4.0.0.0 (2007/11/09) 非選択状態からの遷移を許可するフラグを追加(11/12に振り分け処理をselectResponseMethodに移動)
        5.0.0.2 (2009/09/15) XSS対応⇒チェックする
        5.3.6.0 (2011/06/01) エラーメッセージ変更(URLの振り分け処理時に...のメッセージは出力しない)
        6.2.4.0 (2015/05/15) useRedirectHidden 属性追加

    - #### release2

          protected void release2()

      タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
      オーバーライド:
        `release2` クラス内 `CommonTagSupport`
      変更履歴:

        3.5.5.2 (2004/04/02) 新規追加(rowCount,useTableData)
        3.5.5.5 (2004/04/23) URLに連結するDBTableModelのカラムをCSV形式で指定します。
        3.8.5.1 (2006/04/28) URLに連結するDBTableModelのカラムを[カラム]形式で指定します。
        6.2.4.0 (2015/05/15) useRedirectHidden 属性追加
        6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。

    - #### setTableId

          public void setTableId(String id)

      【TAG】(通常使いません)sessionから所得する DBTableModelオブジェクトの ID (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
      パラメータ:
        `id` - テーブルID (sessionから所得する時のID)
      説明:

             表示処理後に，(内部ポインタを書き換えた)DBTableModelオブジェクトを
             同じキーで、sessionに登録します。
            		(初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。

      変更履歴:

        3.5.5.2 (2004/04/02) 新規追加
        3.5.5.8 (2004/05/20) 内部仮想リクエスト Map を参照できるようにする。

    - #### setDbkeys

          public void setDbkeys(String key)

      【TAG】DBキーをCSV形式でセットします。
      パラメータ:
        `key` - DBキー(CSV形式)
      説明:

             URI の引数にセットするキーを CSV形式でセットします。
             ここの指定は,DBTableModel 上のデータを取り込みます。

      変更履歴:

        3.5.5.5 (2004/04/23) URLに連結するDBTableModelのカラムをCSV形式で指定します。
        3.5.5.8 (2004/05/20) 内部仮想リクエスト Map を参照できるようにする。

    - #### setUseRedirectCheck

          public void setUseRedirectCheck(String flag)

      【TAG】非選択状態の場合にforwardを許可するかどうか[true/false]を指定します(初期値:true)。
      パラメータ:
        `flag` - 非選択状態のforward許可 [true:不許可/false:許可]
      説明:

             初期値はtrueが設定されています
             falseにすると許可されます

      変更履歴:

        4.0.0.0 (2007/11/09) 新規作成

    - #### setUseRedirectHidden

          public void setUseRedirectHidden(String flag)

      【TAG】redirectの処理時に、hiddenパラメータを転送するかどうか[true:する/false:しない]を指定します(初期値:false)。
      パラメータ:
        `flag` - 非選択状態のforward許可 [true:不許可/false:許可]
      説明:

             submitTag で、gamenId を指定すると、redirect されます。
             その場合、従来の画面では、hidden 属性が転送されていなかったため、
             個別に keys,vals で指定する必要がありました。
             hidden で記述した値は、redirect でも転送できるようにします。
             なお、個別定義済みのパラメータがあり、hiddenパラメータを同じキーの場合は、
             個別パラメータを優先し、hiddenパラメータは転送しません。

             本来は、gamenId指定の submit の場合でも、必要最小限の値のみ転送すべきで、
             この値を true にするのは、過去のJSPソースを、修正せずに使いたいケースに限定してください。
             互換性の関係で、初期値は、false にします。

      変更履歴:

        6.2.4.0 (2015/05/15) 新規作成

    - #### toString

          public String toString()

      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
        `toString` クラス内 `CommonTagSupport`
      戻り値:
        このクラスの文字列表現
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.