org.opengion.hayabusa.taglib

## クラス SwitchTag

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

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

      public class SwitchTag
      extends CommonTagSupport

  switch タグは、指定された条件を、case タグに伝えます。 各属性は、{@XXXX} 変数が使用できます。 これは、ServletRequest から、XXXX をキーに値を取り出し,この変数に 割り当てます。つまり、このXXXXをキーにリクエストすれば、 この変数に値をセットすることができます。
  関連項目:
    直列化された形式
  形式サンプル:

         ●形式：<og:switch key="･･･" />
                    <og:case match="A" /> ･･･ </og:case>
                    <og:case match="B" /> ･･･ </og:case>
                    <og:case match="C" /> ･･･ </og:case>
                    <og:case isDefault="true" /> ･･･ </og:case>
                 </og:switch>
         ●body：あり(EVAL_BODY_INCLUDE:BODYをインクルードし、{@XXXX} は解析しません)

         ●Tag定義：
           <og:switch
               key              ○【TAG】switch のマッチ判定用のキーを設定します(必須)。
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           >   ... Body ...
           </og:switch>

         ●使用例
                 <og:switch key="{@PARAM}" />
                    <og:case match="A" /> 処理A </og:case>
                    <og:case match="B" /> 処理B </og:case>
                    <og:case match="C" /> 処理C </og:case>
                    <og:case isDefault="true" /> 処理X </og:case>
                 </og:switch>

                  ・switch の key に対して、case の match に指定された値が、マッチ(switch_key.match( case_match ))
                    した場合に、case の BODY 部分が処理されます。
                    マッチしなければ、BODY部は、スキップされます。
                  ・isDefault="true" の場合は、どれとも マッチしなかった場合に、実行されます。
                  ・Javaの switch-case 文は、最初に処理された case 以降を処理します。通常は、break を入れて
                    後続処理を実行されないようにしています。
                    この、switch-case タグは、caseタグの isBreak 属性で制御します。初期値が isBreak="true" に、
                    なっているため、通常は、どれかの case が実行された段階で、switchの処理は、終了されます。
                    isBreak="false" にすると、switchから抜けずに、継続して case との match を実行します。
                    この場合、Java等と異なるのは、直後のcase文が実行されるのではなく、あくまで match 作業が
                    継続されるということです。つまり、複数の case で処理を行いたい場合は、isBreak="false" に
                    すると同時に、match 条件もそれぞれで、マッチするように設定する必要があります。

                 <og:switch key="{@PARAM}" />
                    <og:case match="[1]"   isBreak="false" /> 処理A </og:case>
                    <og:case match="[12]"  isBreak="false" /> 処理B </og:case>
                    <og:case match="[123]" isBreak="false" /> 処理C </og:case>
                    <og:case isNull="true" /> 処理X </og:case>
                    <og:case isDefault="true" /> 処理Y </og:case>
                 </og:switch>

                  ・上記指定では、isBreak="false" が指定されているため、マッチした後も継続して判定処理が実施されます。
                  ・上記例で言うと、PARAM が "1" の場合、上記３つともにマッチします。
                  ・isNull="true" は、switch の key が null の場合に成立します。(null とは、ゼロ文字列も含む)

  変更履歴:

    5.2.3.0 (2010/12/01) 新規追加

  機能分類
    画面制御
  バージョン
    5.2.3.0 (2010/12/01)
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK1.6,

- - ### フィールドの概要

    - ### クラスから継承されたフィールド 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`

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタと説明
    `SwitchTag()`

  - ### メソッドの概要

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected String` | `getKey()` switch のマッチ判定用のキーを取得します。
    `protected boolean` | `isMatch()` すでにマッチしたかどうかを返します。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `protected void` | `setBreak()` case タグが、ブレイクした場合に、このメソッドを呼び出します。
    `void` | `setKey(String key)` 【TAG】switch のマッチ判定用のキーを設定します。
    `String` | `toString()` このオブジェクトの文字列表現を返します。

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

      `add, add, addEventColumn, addEventColumn, check, check, commitTableObject, debugPrint, doAfterBody, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, 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`

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

    - #### SwitchTag

          public SwitchTag()

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

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

    - #### doEndTag

          public int doEndTag()

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

    - #### release2

          protected void release2()

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

    - #### setKey

          public void setKey(String key)

      【TAG】switch のマッチ判定用のキーを設定します。
      パラメータ:
        `key` - マッチ判定用のキー
      関連項目:
        `getKey()`
      説明:

             switch のマッチ判定用のキーを設定します。

    - #### getKey

          protected String getKey()

      switch のマッチ判定用のキーを取得します。 case タグで、この値を取り出して、マッチ判定を行います。
      戻り値:
        マッチ判定用のキー
      関連項目:
        `setKey( String )`

    - #### setBreak

          protected void setBreak()

      case タグが、ブレイクした場合に、このメソッドを呼び出します。 これは、 case タグが isBreak="true" でマッチした場合、このメソッドを 呼び出し、isMatch フラグを false に設定します。 他の case は、このフラグを参照して、false であれば、スルーします。
      関連項目:
        `isMatch()`

    - #### isMatch

          protected boolean isMatch()

      すでにマッチしたかどうかを返します。 これは、 case タグが 処理を継続するかどうかの判定に利用します。 case タグが isBreak="true" でマッチした場合、isMatch フラグは、 false が返りますので、継続処理しません。
      戻り値:
        マッチしたかどうか[true:継続判定/false:スルー]
      関連項目:
        `setBreak()`

    - #### toString

          public String toString()

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

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