クラス 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】検索結果が0件のとき処理を続行するかどうか[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,
  • コンストラクタの詳細

    • 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
      関連項目:
      説明:
      ここで指定するクラス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】検索結果が0件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
      パラメータ:
      flag - 0件時停止可否 [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を返しません