パッケージ org.opengion.hayabusa.taglib

# クラス TableFilterTag

java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
jakarta.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.TableFilterTag

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

public class TableFilterTag extends CommonTagSupport
TableFilter のサブクラスをCALLしてDBTableModelにアクセスするタグです。 DBTableModel を TableFilter のサブクラス(classIdで指定)に渡して処理を実行します。 クラスを作成する場合は、org.opengion.hayabusa.db.TableFilter インターフェースを継承した クラスにする必要があります。また、classId 属性には、システムリソース で 設定した TableFilter.XXXX の XXXX を指定します。 BODY部分は、SQLを記述する為だけに使っていましたが、CSS定義形式の書式で、keys,vals を記述 できるようにします。 これは、下記のようなパラメータを、keys="KEY,KEY2,KEY3" vals='AAAA,"BB,CC,DD",EE' のような記述形式と { KEY1 : AAAA ; KEY2 : BB,CC,DD ; KEY3 : EE ; ・・・・・・ } のような、CSS形式に類似の形式でも記述できるようにしました。 keys,vals と CSS定義形式パラメータを同時に指定した場合は、両方とも有効です。 ただし、キーが重複した場合は、不定と考えてください。 現時点では、CSS定義形式パラメータが優先されますが、これは、単に内部パラメータMapへの 登録順が、CSS定義形式パラメータが後の為、上書きされるためです。 ※ このタグは、Transaction タグの対象です。

関連項目:
  - 直列化された形式
変更履歴:
  3.8.5.0 (2006/03/20) 新規作成
機能分類
  その他
形式ｻﾝﾌﾟﾙ:
  ●形式：<og:tableFilter classId="…" /> ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) ●Tag定義： <og:tableFilter classId ○【TAG】データベース処理を実行するクラスパスを指定します(必須)。 tableId 【TAG】(通常は使いません)DBTableModel sessionに登録されているキーを指定します viewMarkerId 【TAG】(通常は使いません)requestから取得する ViewMarker に対応する Attributes オブジェクトの ID modifyType 【TAG】データ処理の方法(A:追加 C:更新 D:削除)を指定します keys 【TAG】リンク先に渡すキーを指定します vals 【TAG】keys属性に対応する値をCSV形式で複数指定します selectedAll 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false) stopZero 【TAG】検索結果が０件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する]) scope 【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session) dbid 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します useSLabel 【TAG】7.0.7.0 (2019/12/13) ｴﾗｰﾒｯｾｰｼﾞにSLABELを利用するかどうか[true/false]を指定します(初期値:false) caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 5.7.7.2 (2014/06/20) caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 5.7.7.2 (2014/06/20) caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20) caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) > ... Body ... </og:tableFilter> ●使用例 ・引数/プロシジャーを直接書く場合 【entry.jsp】 <og:tableFilter classId = "WL_LOGICSET" :TableFilter のサブクラス(実行クラス) tableId = "WL0000" :登録元のDBTableModelのsession/request変数内の取得キー keys = "AA,BB,CC" :実行クラスへの引数のキー vals = "{@AA},{@BB},{@CC}" :実行クラスへの引数の値 selectedAll = "false/true" :処理対象の行を全行選択するかどうか(初期値:false) modifyType = "A/C/D" :処理の方法(A:追加 C:更新 D:削除)を指定します。初期値は自動です。 /> ・BODY部分に、CSS形式のパラメータ（keys,vals）を記述する例 <og:tableFilter classId = "WL_LOGICSET" :TableFilter のサブクラス(実行クラス) tableId = "WL0000" :登録元のDBTableModelのsession/request変数内の取得キー selectedAll = "false/true" :処理対象の行を全行選択するかどうか(初期値:false) modifyType = "A/C/D" :処理の方法(A:追加 C:更新 D:削除)を指定します。初期値は自動です。 > { AA : {@AA} BB : {@BB} CC : {@CC} } </og:tableFilter>
導入されたバージョン:
  JDK1.1,

- ## フィールドの概要

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

  `BR, BUFFER_MIDDLE, CR`

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

  `bodyContent`

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

  `id, pageContext`

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

  `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

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

  `EVAL_BODY_AGAIN`

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

  `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

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

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

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `int`
  `doAfterBody()`
  Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
  `int`
  `doEndTag()`
  Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
  `int`
  `doStartTag()`
  Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
  `protected int[]`
  `getParameterRows()`
  表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
  `protected void`
  `release2()`
  タグリブオブジェクトをリリースします。
  `void`
  `setClassId(String id)`
  【TAG】データベース処理を実行するテーブルフィルターのクラスIDを指定します。
  `void`
  `setDbid(String id)`
  【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
  `void`
  `setKeys(String key)`
  【TAG】リンク先に渡すキーを指定します。
  `void`
  `setModifyType(String type)`
  【TAG】データ処理の方法[A:追加/C:更新/D:削除]を指定します(初期値:自動判定)。
  `void`
  `setSelectedAll(String all)`
  【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
  `void`
  `setStopZero(String flag)`
  【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
  `void`
  `setTableId(String id)`
  【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
  `void`
  `setUseSLabel(String prm)`
  【TAG】ｴﾗｰﾒｯｾｰｼﾞにSLABELを利用するかどうか[true/false]を指定します(初期値:false)。
  `void`
  `setVals(String val)`
  【TAG】names属性に対応する値をCSV形式で複数指定します。
  `void`
  `setViewMarkerId(String id)`
  【TAG】(通常は使いません)requestから取得する ViewMarker に対応する Attributes オブジェクトの ID。
  `String`
  `toString()`
  このオブジェクトの文字列表現を返します。

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

  `add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsg, getMsglbl, getObject, getParameterNames, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, 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`

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

  `doInitBody, getBodyContent, getPreviousOut, release, setBodyContent`

  ### クラスから継承されたメソッド jakarta.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`

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

  `getParent, setPageContext, setParent`

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

  - ### TableFilterTag

    public TableFilterTag()
    デフォルトコンストラクター
    変更履歴:
      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 )
    変更履歴:
      5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加

  - ### doAfterBody

    public int doAfterBody()
    Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
    定義:
      `doAfterBody` インタフェース内 `IterationTag`
    オーバーライド:
      `doAfterBody` クラス内 `CommonTagSupport`
    戻り値:
      後続処理の指示(SKIP_BODY)
    変更履歴:
      5.6.5.2 (2013/06/21) bodyローカル化、sql、paramMap 追加, 5.6.5.2 (2013/06/21) bodyローカル化、sql、paramMap 追加, 8.0.0.0 (2021/10/01) ロジック間違い。DBSELECTのSQL文は、{}の中は処理しない

  - ### doEndTag

    public int doEndTag()
    Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    定義:
      `doEndTag` インタフェース内 `Tag`
    オーバーライド:
      `doEndTag` クラス内 `CommonTagSupport`
    戻り値:
      後続処理の指示
    変更履歴:
      3.8.7.0 (2006/12/15) アクセスログ取得の為、ApplicationInfoオブジェクトを設定, 4.2.3.0 (2008/06/23) DBIDとボディー部分の記述を下位クラスに渡す用に修正, 4.3.7.4 (2009/07/01) Resouceオブジェクトを下位クラスに渡す用に修正, 5.1.9.0 (2010/08/01) Transaction 対応, 5.2.1.0 (2010/10/01) debugPrint() メソッドの処理条件見直し, 5.3.7.0 (2011/07/01) TransactionReal の引数変更 、Transaction対応で、close処理を入れる。, 5.6.5.2 (2013/06/21) bodyローカル化、sql、paramMap 追加, 5.7.6.2 (2014/05/16) table件数が変わる場合、"DB.COUNT" キーでリクエストに再セットする。, 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属性を追加, 6.0.4.0 (2014/11/28) NullPointerException が発生するので、事前にチェックします。, 6.3.6.1 (2015/08/28) Transaction でAutoCloseableを使用したtry-with-resources構築に対応。, 6.4.3.3 (2016/03/04) HybsSystem.newInstance(String,String) への置き換え。, 7.0.7.0 (2019/12/13) useSLabel 属性を追加。, 8.0.0.0 (2021/09/30) viewMarker追加

  - ### release2

    protected void release2()
    タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。
    オーバーライド:
      `release2` クラス内 `CommonTagSupport`
    変更履歴:
      5.6.5.2 (2013/06/21) body廃止、sql、paramMap 追加, 5.7.6.2 (2014/05/16) stopZero属性追加, 7.0.7.0 (2019/12/13) useSLabel 属性を追加。

  - ### getParameterRows

    protected int[] getParameterRows()
    表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
    オーバーライド:
      `getParameterRows` クラス内 `CommonTagSupport`
    戻り値:
      選択行の配列
    変更履歴:
      6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
    このﾒｿｯﾄﾞは、nullを返しません

  - ### setClassId

    public void setClassId(String id)
    【TAG】データベース処理を実行するテーブルフィルターのクラスIDを指定します。
    パラメータ:
      `id` - 実行クラスID
    関連項目:
      - `TableFilter インターフェース`
    説明:
      ここで指定するクラスIDは、システムリソース にて TableFilter の サブクラス(インターフェース継承)として指定する必要があります。 クラス自身は、org.opengion.hayabusa.db.TableFilter インターフェースを継承している必要があります。

  - ### setTableId

    public void setTableId(String id)
    【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
    パラメータ:
      `id` - テーブルID (sessionに登録する時のID)
    説明:
      検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=])。

  - ### setViewMarkerId

    public void setViewMarkerId(String id)
    【TAG】(通常は使いません)requestから取得する ViewMarker に対応する Attributes オブジェクトの ID。
    パラメータ:
      `id` - ViewMarkerオブジェクトID
    変更履歴:
      8.0.0.0 (2021/09/30) viewMarker追加
    説明:
      ViewForm オブジェクトに、ViewMarker オブジェクトをこのキーより取得することにより、 カラムに対して、マーカー情報を付加して表示させる。 初期値は、HybsSystem.VIEW_MARK_KEY です。

  - ### setSelectedAll

    public void setSelectedAll(String all)
    【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
    パラメータ:
      `all` - 全件選択済み [true:全件選択済み/false:通常]
    説明:
      全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、指定します。(true/false) デフォルト false です。

  - ### setStopZero

    public void setStopZero(String flag)
    【TAG】検索結果が０件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
    パラメータ:
      `flag` - ０件時停止可否 [true:処理を中止する/false:続行する]
    変更履歴:
      5.7.6.2 (2014/05/16) 新規追加
    説明:
      初期値は、false(続行する)です。

  - ### setModifyType

    public void setModifyType(String type)
    【TAG】データ処理の方法[A:追加/C:更新/D:削除]を指定します(初期値:自動判定)。
    パラメータ:
      `type` - 処理方法 [A:追加/C:更新/D:削除]
    説明:
      通常は、DBTableModel に自動設定されている modifyType を元に、データ処理方法を 選別します。(A:追加 C:更新 D:削除) この場合、行単位で modifyType の値を取得して判別する必要がありますが、一般には 処理対象は、全件おなじ modifyType である可能性が高いです。 また、selectedAll などで強制的に全件処理対象とする場合は、modifyType に値が 設定さていません。その様な場合に外部より modifyType を指定します。 初期値は、自動判定 です。

  - ### setKeys

    public void setKeys(String key)
    【TAG】リンク先に渡すキーを指定します。
    パラメータ:
      `key` - リンク先に渡すキー
    説明:
      戻る時に、検索時のキャッシュに指定した引数以外に指定したり、別の値に置き換えたり する場合のキーを設定できます。CSV形式で複数指定できます。 vals 属性には、キーに対応する値を、設定してください。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

  - ### setVals

    public void setVals(String val)
    【TAG】names属性に対応する値をCSV形式で複数指定します。
    パラメータ:
      `val` - names属性に対応する値 (CSV形式)
    説明:
      キーに設定した値を、CSV形式で複数して出来ます。 指定順序は、キーと同じにしておいて下さい。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。

  - ### setDbid

    public void setDbid(String id)
    【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
    パラメータ:
      `id` - データベース接続ID
    説明:
      Queryオブジェクトを作成する時のDB接続IDを指定します。 これは、システムリソースで、DEFAULT_DB_URL 等で指定している データベース接続先 情報に、XX_DB_URL を定義することで、 dbid="XX" とすると、この 接続先を使用して データベースにアクセスできます。

  - ### setUseSLabel

    public void setUseSLabel(String prm)
    【TAG】ｴﾗｰﾒｯｾｰｼﾞにSLABELを利用するかどうか[true/false]を指定します(初期値:false)。
    パラメータ:
      `prm` - SLABEL利用 [true:利用する/false:利用しない]
    変更履歴:
      7.0.7.0 (2019/12/13) 新規追加
    説明:
      通常のｴﾗｰﾒｯｾｰｼﾞは、ﾗﾍﾞﾙ（長）が使われますが、これをﾗﾍﾞﾙ（短）を使いたい場合に、true にセットします。 ここでのラベル（短）は、ﾀｸﾞ修飾なしの、ﾗﾍﾞﾙ（短）です。 標準はfalse:利用しない=ﾗﾍﾞﾙ（長）です。 true/false以外を指定した場合はfalse扱いとします。 ﾗﾍﾞﾙﾘｿｰｽの概要説明があれば表示しますが、useSLabel="true" 時は、概要説明を表示しません。

  - ### toString

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