org.opengion.hayabusa.taglib

## クラス TabLinkTag

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

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

      public class TabLinkTag
      extends CommonTagSupport

      タブ形式のリンクを表示するタグです。

       このタグ形式の実態は、リンクのリストであるため、実の画面の表示はターゲットを指定して
       別フレームで行う必要があります。

       タブの指定方法については、listType属性の指定により、クエリ発行(DB)により動的に生成する
       パターンと、タグ指定(TAG)により、静的に生成するパターンがあります。
       listType属性に何も指定されていない場合は、Body部分に記述された内容により、自動判定されます。
       ("SELECT"で始まっている場合はDB、それ以外はTAGとして処理)

       ①listType属性が"DB"の場合
        検索された各カラムは、その順番により次の意味を持ちます。
        [第1カラム] タブの名前        : リンク時のキー情報、後述のopenTabName属性のキーとしても使用 ※必須
        [第2カラム] タブの表示名称    : タブの表示名称 指定がない場合は、第1カラムが表示名称となります。
        [第3カラム] タブのリンク先URL : タブのリンク先URL 指定がない場合は、href属性の値が適用されます。
        [第4カラム] タブのクラス属性  : 個別のタブに付加されるクラス属性 指定がない場合は、unselClass属性の値が適用されます。
        [第5カラム] タブのロールズ    : タブのロールズを指定します。ユーザーロールズと一致しない指定した場合は、タブが表示されなくなります。
        [第6カラム] タブの選択可否    : タブの選択可否を'true'or'false'で指定します。falseを指定した場合は、タブが表示されなくなります。
                                        (ロールズで選択不可になっている場合は、この値は無視されます)
        各カラムの値は[カラム名]=[値]の形で、リンク先のJSPに引数として渡されます。
        また、リンク先のJSPについては、href属性で指定します。

       ②listType属性が"TAG"の場合
        tabListタグを記述し、個別にタブを定義します。
        制御可能な項目は、①DBの場合と同等です。
        タブの名前を定義するname属性は、tabListタグで必ず定義する必要があります。
        lbl属性が指定されていない場合は、name属性のラベル名称を取得します。
        タブのリンク先JSP及び、クラス属性については、tabListタグで指定がない場合、tabListタグの値が適用されます。

       [共通設定]
       初期設定では、第1番目の"有効な"タブが自動的に開かれます。(="true")
       各タブの表示方法で、選択不可能なタブが存在している場合は、それらを読み飛ばした上で、"有効な"タブを
       検索します。
       また、自動で開くタブは、openTabName属性で指定可能であり、これに変数を定義することで、
       画面リロード時も、開いていたタブを再度選択された状態で表示することが可能です。

       選択したタブ及び非選択のタブの枠線や、背景色等を変更する場合は、custom.cssでクラスを定義し、
       変更して下さい。

       タブの表示方向(水平方向 or 垂直方向)については、orientation属性で変更することが可能です。
       (初期値は、水平方向)
       水平方向にした場合は、listCount属性により強制的に一定数のタブを表示する毎に、改行を挿入することができます。

       このタグを使用する場合は、headタグで必ずuseTabLink="true"を指定してJavaScriptをロードして下さい。

       各属性は、{@XXXX} 変数が使用できます。
       これは、ServletRequest から、XXXX をキーに値を取り出し,この変数に割り当てます。
       つまり、このXXXXをキーにリクエストすれば、この変数に値をセットすることができます。

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

         ●形式：<og:tabLink href="…" … />
         ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

         ●Tag定義：
           <og:tabLink
               listType           【TAG】タブの一覧をどこから取得するかを指定します(初期値:AUTO)
               href               【TAG】リンク先のJSPを指定します(初期値:result.jsp)
               target             【TAG】リンクのターゲットを指定します(初期値:RESULT)
               openTab            【TAG】リンク表示にタブリンクを自動で開くかどうか[true/false]を指定します(初期値:true[=開く])
               openTabName        【TAG】最初に開くタブリンクの名前を指定します
               constKeys          【TAG】次画面に渡す定数パラメーターのキーを指定します
               constVals          【TAG】次画面に渡す定数パラメーターの値を指定します
               listCount          【TAG】1行辺りに表示するタブの数を指定します(初期値:10)
               selClass           【TAG】選択タブのクラスを指定します(初期値:selTab)
               unselClass         【TAG】非選択タブのクラスを指定します(初期値:unselTab)
               orientation        【TAG】タブの方向、横型(Horizontal)か縦型(Vertical)を指定します(初期値:横型)
               width              【TAG】タブリンクの幅を % 、px 、または "auto" で指定します
               height             【TAG】タブの高さを、% 、px 、または "auto" で指定します
               debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
           >   ... Body ...
           </og:tabLink>

         ●使用例
           ①DBからタブリストを取得する場合

            Body部分に記述されたクエリよりタブ一覧を生成します。

              <og:tabLink
                  listType        = "DB"                      タブの一覧をどこから取得するか
                  href            = "result.jsp"              リンク先のJSP
                  target          = "RESULT"                  リンクターゲット
                  openTab         = "[true/false]"            タブ表示後にタブを自動で開く
                  openTabName     = "{@PN}               自動で開くタブの名前
                  constKeys       = "KEY1"                    次画面に固定で渡すキー一覧
                  constVals       = "{@VAL1}"            次画面に固定で渡す値一覧
                  listCount       = "10"                      1行辺りに表示するタブの数
                  selClass        = "selTab"                  選択タブのクラス
                  unselClass      = "unselTab"                非選択タブのクラス
                  width           = "100px"                   タブリンクの幅
                  height          = "50px"                    タブリンクの高さ
               >
                       select PN,HINM,'tabClass','query.jsp','ADMIN','false' from XX01 where PN = '{@PN}' order by PN
              </og:tabLink>

           ②tabListタグからタブリストを生成する場合

            tabListタグよりタブ一覧を生成します。

              <og:tabLink
                  listType        = "DB"                      タブの一覧をどこから取得するか
                  href            = "result.jsp"              リンク先のJSP
                  target          = "RESULT"                  リンクターゲット
                  openTab         = "[true/false]"            タブ表示後にタブを自動で開く
                  openTabName     = "{@PN}               自動で開くタブの名前
                  constKeys       = "KEY1"                    次画面に固定で渡すキー一覧
                  constVals       = "{@VAL1}"            次画面に固定で渡す値一覧
                  listCount       = "10"                      1行辺りに表示するタブの数
                  selClass        = "selTab"                  選択タブのクラス
                  unselClass      = "unselTab"                非選択タブのクラス
                  width           = "100px"                   タブリンクの幅
                  height          = "50px"                    タブリンクの高さ
               >
                  <og:tabList name="TAB1" href="result1.jsp" keys="PN,CDK" vals="ABC,V" />
                  <og:tabList name="TAB2" href="result2.jsp" keys="PN,CDK" vals="BCD,W" />
                  <og:tabList name="TAB3" href="result3.jsp" keys="PN,CDK" vals="CDE,X" />
              </og:tabLink>

  機能分類
    画面表示
  バージョン
    0.9.0 2008/09/26
  作成者
    Nakamura
  導入されたバージョン:
    JDK1.4,

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

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

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

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

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

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `protected void` | `addTag(String hr, String name, String label, String clz, boolean visible, String[] keys, String[] vals)` 子タグであるタブリストタグからタブ情報をセットします。
    `int` | `doAfterBody()` Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    `int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    `int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
    `protected void` | `release2()` タグリブオブジェクトをリリースします。
    `void` | `setConstKeys(String keys)` 【TAG】次画面に渡す定数パラメーターのキーを指定します。
    `void` | `setConstVals(String vals)` 【TAG】次画面に渡す定数パラメーターの値を指定します。
    `void` | `setHeight(String ht)` 【TAG】タブの高さを、% 、px 、または "auto" で指定します(初期値:auto)。
    `void` | `setHref(String hr)` 【TAG】リンク先のJSPを指定します(初期値:result.jsp)。
    `void` | `setListCount(String cnt)` 【TAG】1行辺りに表示するタブの数を指定します(初期値:10)。
    `void` | `setListType(String tp)` 【TAG】タブの一覧をどこから取得するか[AUTO/DB/TAG]を指定します(初期値:AUTO)。
    `void` | `setOpenTab(String flag)` 【TAG】リンク表示にタブリンクを自動で開くかどうか[true/false]を指定します(初期値:true[=開く])。
    `void` | `setOpenTabName(String name)` 【TAG】最初に開くタブリンクの名前を指定します。
    `void` | `setOrientation(String ori)` 【TAG】タブの方向[Horizontal(or H):横型/Vertical(or V):縦型]を指定します(初期値:Horizontal:横型)。
    `void` | `setSelClass(String cls)` 【TAG】選択タブのクラスを指定します(初期値:selTab)。
    `void` | `setTarget(String tgt)` 【TAG】リンクのターゲットを指定します(初期値:RESULT)。
    `void` | `setUnselClass(String cls)` 【TAG】非選択タブのクラスを指定します(初期値:unselTab)。
    `void` | `setWidth(String wh)` 【TAG】タブリンクの幅を % 、px 、または "auto" で指定します(初期値:auto)。
    `String` | `toString()` このオブジェクトの文字列表現を返します。

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

      `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doCatch, doFinally, 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, getRequestMethod, 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`

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

    - #### TabLinkTag

          public TabLinkTag()

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

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

  - ### メソッドの詳細

    - #### doStartTag

          public int doStartTag()

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

    - #### doAfterBody

          public int doAfterBody()

      Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
      定義:
        `doAfterBody` インタフェース内 `IterationTag`
      オーバーライド:
        `doAfterBody` クラス内 `CommonTagSupport`
      戻り値:
        後続処理の指示(SKIP_BODY)
      変更履歴:

        6.3.1.1 (2015/07/10) BodyString,BodyRawStringは、CommonTagSupport で、trim() します。

    - #### doEndTag

          public int doEndTag()

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

        4.3.5.0 (2008/02/01) 処理及び内部構造を大幅に見直し

    - #### release2

          protected void release2()

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

    - #### addTag

          protected void addTag(String hr,
                                String name,
                                String label,
                                String clz,
                                boolean visible,
                                String[] keys,
                                String[] vals)

      子タグであるタブリストタグからタブ情報をセットします。
      パラメータ:
        `hr` - 画面URL
        `name` - タブの名前
        `label` - タブの表示名称
        `clz` - 非選択状態のタブに付加するclass名
        `visible` - タブが選択可能 [true:可能/false:不可能]
        `keys` - リンク先のJSPに渡すキー一覧
        `vals` - リンク先のJSPに渡す値一覧

    - #### setListType

          public void setListType(String tp)

      【TAG】タブの一覧をどこから取得するか[AUTO/DB/TAG]を指定します(初期値:AUTO)。
      パラメータ:
        `tp` - 取得方法 [AUTO/DB/TAG]
      説明:

             タブの一覧をどこから取得するかを指定します。
             現状の実装では、クエリを発行して一覧を生成する「DB」と、子タグである
             tabListタグを列挙してタブを定義する「TAG」が実装されています。

             また、「AUTO」と指定した場合は、Body部分の内容に応じて自動的に判定されます。
             初期値は、｢AUTO」です。

      変更履歴:

        6.4.3.4 (2016/03/11) CSV形式の文字連結を、stream 経由で行います。

    - #### setHref

          public void setHref(String hr)

      【TAG】リンク先のJSPを指定します(初期値:result.jsp)。
      パラメータ:
        `hr` - リンク先のJSP
      説明:

             リンク先のJSPを指定します。
             このタブリンクは、あくまで「タブの形をしたリンク」なので、
             target属性と合わせてセットする必要があります。
             初期値は、｢result.jsp」です。

    - #### setTarget

          public void setTarget(String tgt)

      【TAG】リンクのターゲットを指定します(初期値:RESULT)。
      パラメータ:
        `tgt` - リンクターゲット
      説明:

             リンクのターゲットを指定します。
             このタブリンクは、あくまで「タブの形をしたリンク」なので、
             target属性を設定し、別のフレームに実画面を表示するようにします。
             初期値は、｢RESULT」です。

    - #### setOpenTab

          public void setOpenTab(String flag)

      【TAG】リンク表示にタブリンクを自動で開くかどうか[true/false]を指定します(初期値:true[=開く])。
      パラメータ:
        `flag` - 自動タブオープン [true:自動で開く/false:開かない]
      説明:

             リンク表示にタブリンクを自動で開くかを指定します。
             openTabName属性が指定されていない場合、自動で開くタブは
             「1番目に表示されたタブリンク」です。
             指定されている場合は、その名前を持つ「1番目」のタブが自動で開かれます。
             タブが選択不可能な状態の場合は、「1番目」の条件から除外されます。
             初期値は、「true(開く)」です。

    - #### setOpenTabName

          public void setOpenTabName(String name)

      【TAG】最初に開くタブリンクの名前を指定します。
      パラメータ:
        `name` - 初期表示タブ名前
      説明:

             最初に開くタブリンクのキーを指定します。

    - #### setConstKeys

          public void setConstKeys(String keys)

      【TAG】次画面に渡す定数パラメーターのキーを指定します。
      パラメータ:
        `keys` - 定数キー (CSV形式)
      関連項目:
        `setConstVals( String )`
      説明:

             次画面に渡す定数パラメーターのキーを指定します。
             キーはCSV形式で複数指定が可能です。
             パラメーターの値は、constVals属性の数と一致している必要があります。

    - #### setConstVals

          public void setConstVals(String vals)

      【TAG】次画面に渡す定数パラメーターの値を指定します。
      パラメータ:
        `vals` - 定数値 (CSV形式)
      関連項目:
        `setConstKeys( String )`
      説明:

             次画面に渡す定数パラメーターの値を指定します。
             値はCSV形式で複数指定が可能です。
             パラメーターの値は、constKeys属性の数と一致している必要があります。

    - #### setListCount

          public void setListCount(String cnt)

      【TAG】1行辺りに表示するタブの数を指定します(初期値:10)。
      パラメータ:
        `cnt` - 1行タブ数
      説明:

             1行辺りに表示するタブの数を指定します。
             1行辺りのタブの数がこの設定を超えると、自動的に折り返します。
             また、折り返し毎に、左に10pxのマージンを設けます。
             初期値は、10です。
             この属性は、orientationがHorizontal(水平方向)の場合のみ有効です。

    - #### setSelClass

          public void setSelClass(String cls)

      【TAG】選択タブのクラスを指定します(初期値:selTab)。
      パラメータ:
        `cls` - 選択タブのクラス名
      説明:

             タブが選択されている状態にある場合の、タブ部分のクラス名を指定します。
             このクラス名を変更する場合は、そのクラスをcustom/custom.css等で再定義して下さい。
             初期値は、selTabです。

    - #### setUnselClass

          public void setUnselClass(String cls)

      【TAG】非選択タブのクラスを指定します(初期値:unselTab)。
      パラメータ:
        `cls` - 選択タブのクラス名
      説明:

             タブが選択されていない状態にある場合の、タブ部分のクラス名を指定します。
             このクラス名を変更する場合は、そのクラスをcustom/custom.css等で再定義して下さい。
             初期値は、unselTabです。

    - #### setOrientation

          public void setOrientation(String ori)

      【TAG】タブの方向[Horizontal(or H):横型/Vertical(or V):縦型]を指定します(初期値:Horizontal:横型)。
      パラメータ:
        `ori` - タブの方向 [Horizontal(or H):横型/Vertical(or V):縦型]
      説明:

             タブは、上にタブが並ぶ横型と左にタブが並ぶ縦型があります。
             この属性では、横型は、Horizontal 、縦型は、Vertical を指定します。
             指定は、文字列の最初の一文字を見ているだけですので、HかVでも構いません。

             縦型(Vertical)にした場合、各タブ要素は、フレームサイズの幅に合わせて
             最大で表示されます。幅を固定する場合は、width属性を指定して下さい。

             初期値は、横型(Horizontal) です。

    - #### setWidth

          public void setWidth(String wh)

      【TAG】タブリンクの幅を % 、px 、または "auto" で指定します(初期値:auto)。
      パラメータ:
        `wh` - 幅 (% 、px 、または "auto" )
      説明:

             初期値は、"auto"(自動設定) です。
             autoの場合、横型表示では、文字の幅に合わせて自動的に調整され、
             縦型表示の場合は、フレームサイズに合わせて拡大して表示されます。

    - #### setHeight

          public void setHeight(String ht)

      【TAG】タブの高さを、% 、px 、または "auto" で指定します(初期値:auto)。
      パラメータ:
        `ht` - 高さ (% 、px 、または "auto" )
      説明:

             タブの高さを、% 、px 、または "auto" で指定します
             初期値は、"auto"(自動設定) です。

    - #### toString

          public String toString()

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

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