概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
openGion 5.6.5.0
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## org.opengion.hayabusa.taglib
クラス TableUpdateTag

    java.lang.Object
      javax.servlet.jsp.tagext.TagSupport
          javax.servlet.jsp.tagext.BodyTagSupport
              org.opengion.hayabusa.taglib.CommonTagSupport
                  org.opengion.hayabusa.taglib.QueryTag
                      org.opengion.hayabusa.taglib.TableUpdateTag

すべての実装されたインタフェース:
  java.io.Serializable, javax.servlet.jsp.tagext.BodyTag, javax.servlet.jsp.tagext.IterationTag, javax.servlet.jsp.tagext.JspTag, javax.servlet.jsp.tagext.Tag, javax.servlet.jsp.tagext.TryCatchFinally

    public class TableUpdateTag

extends QueryTag

SQL文を直接指定して、データベースに追加/更新/削除を行います(queryType="JDBCTableUpdate")。 存在チェックを行う場合は、tableExist タグと併用してください。 複雑な処理が必要な場合は、従来より使用しています、PLSQLをCALLする、 plsqlUpdateタグを使用してください。 また、tableUpdateParam タグを使用する事で、テーブル名とsqlTypeの指定で動的に SQL文を自動生成できます。これにより、追加、更新、削除やテーブルに関して、 単一のJSP画面ですべて対応できるようになります。 ※ このタグは、Transaction タグの対象です。

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

       ●形式：<og:tableUpdate command="…" names="…" queryType="JDBCTableUpdate" >
                   {@SQL}
               </og:update>
       ●body：あり

       ●Tag定義：
         <og:tableUpdate
             queryType          【TAG】Query を発行する為のクラスIDを指定します({@og.doc03Link queryType 初期値:JDBCTableUpdate})
             sqlType            【TAG】BODY部に書かれている Param の SQLタイプを指定します
             command            【TAG】コマンド(NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY)
             scope              【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session)
             displayMsg         【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します (初期値:VIEW_DISPLAY_MSG[=])
             resourceType       【特殊】クリアするリソースの種類[GEA03/GEA04/GEA08]を指定します
             conditionKey       【TAG】条件判定するカラムＩＤを指定します(初期値:null)
             conditionList      【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件)
             tableId            【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
             dbid               【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します
             selectedAll        【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)
             commitTableModel   【特殊】SQL実行後に結果をDBTableModelに反映させるかどうか[true/false]を指定します(初期値:true)
             followCdkh         【TAG】DBTableModelの改廃Cに従って処理を行うかを指定します
             quotCheck          【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:false)
             debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
         >   ... Body ...
         </og:tableUpdate>

       ●使用例
          ・QUERYを他のJSPから渡す場合
          【copy.jsp】
              <og:hidden name="SQL" >
                INSERT INTO GE41
                     (CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG,
                     FGJ,DYSET,DYUPD,USRSET,USRUPD,PGUPD)
                VALUES
                     ([CLM],[NAME_JA],[LABEL_NAME],[KBSAKU],[SYSTEM_ID],[LANG],
                     '1','{@USER.YMDH}','{@USER.YMDH}','{@USER.ID}','{@USER.ID}','{@GUI.KEY}')
              </og:value>

          【entry.jsp】
              <og:tableUpdate
                  command   = "{@command}"
                  queryType = "JDBCTableUpdate"
              {@SQL}
              </og:tableUpdate>

          ・tableUpdateParamを使用する場合
          【entry.jsp】
              <og:tableUpdate
                  command   = "{@command}"
                  queryType = "JDBCTableUpdate"
                  sqlType   = "{@sqlType}"        // tableUpdateParam の sqlType と一致
              >
                  <og:tableUpdateParam
                      sqlType     = "{@sqlType}"       // INSERT,COPY,UPDATE,MODIFY,DELETE
                      table       = "{@TABLE_NAME}"    // 処理対象のテーブル名
                      names       = "{@names}"         // 処理対象のカラム名
                      omitNames   = "{@omitNames}"     // 処理対象外のカラム名
                      where       = "{@where}"         // 処理対象を特定するキー
                      constKeys   = "{@constKeys}"     // 処理カラム名の中の固定情報カラム名
                      constVals   = "{@constVals}"     // 処理カラム名の中の固定情報設定値
                  />
              </og:tableUpdate>

          ・処理の可否を指定する場合
          【entry.jsp】
              <og:tableUpdate
                  command   = "{@command}"
                  queryType = "JDBCTableUpdate"
                  conditionKey  ="…"      : 条件判定するカラムＩＤを指定(初期値は columnId )
                  conditionList ="…"      : 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件)
              {@SQL}
              </og:tableUpdate>

変更履歴:

  3.8.8.0 (2007/12/22) 新規作成

機能階層
  ＤＢ登録
バージョン
  4.0
作成者
  Kazuhiko Hasegawa
導入されたバージョン:
  JDK5.0,

フィールドの概要
`static java.lang.String` | `CMD_ENTRY` command 引数に渡す事の出来る コマンド 登録"ENTRY"

クラス org.opengion.hayabusa.taglib.QueryTag から継承されたフィールド
`CMD_NEW, CMD_RENEW, command, displayMsg, dyStart, errCode, errMessage, errMsgId, executeCount, maxRowCount, names, outMessage, skipRowCount, sql, stopError, table, tableId, xssCheck`

クラス 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`

コンストラクタの概要
`TableUpdateTag()`

メソッドの概要
`int` | `doEndTag()` Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
`int` | `doStartTag()` Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
`protected void` | `execute(Query query)` Query を実行します。
`protected java.lang.String[]` | `getNames()` 引数の名称配列
`protected int[]` | `getParameterRows()` 表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行番号の 配列を返します。
`protected java.lang.String` | `getSqlType()` SQLタイプを返します。
`protected void` | `release2()` タグリブオブジェクトをリリースします。
`void` | `setCommitTableModel(java.lang.String commitTblMdl)` 【特殊】SQL実行後に結果をDBTableModelに反映させるかどうか[true/false]を指定します(初期値:true)。
`void` | `setConditionKey(java.lang.String key)` 【TAG】条件判定するカラムＩＤを指定します(初期値:null)。
`void` | `setConditionList(java.lang.String list)` 【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件)。
`void` | `setFollowCdkh(java.lang.String flg)` 【TAG】DBTableModelの改廃Cに従って処理を行うかを指定します。
`void` | `setQueryType(java.lang.String id)` 【TAG】Query を発行する為のクラスIDを指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=5.6.5.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBCTableUpdate</a>)。
`void` | `setQuotCheck(java.lang.String flag)` 【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:false)。
`void` | `setResourceType(java.lang.String type)` 【特殊】クリアするリソースの種類[GEA03/GEA04/GEA08]を指定します。
`void` | `setSelectedAll(java.lang.String all)` 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
`void` | `setSqlType(java.lang.String type)` 【TAG】BODY部に書かれている Param の SQLタイプを指定します。
`java.lang.String` | `toString()` このオブジェクトの文字列表現を返します。

クラス org.opengion.hayabusa.taglib.QueryTag から継承されたメソッド
`doAfterBody, getRequest, setCheckNames, setCommand, setDbid, setDisplayMsg, setMainTrans, setMaxRowCount, setModifyType, setNames, setNotfoundMsg, setOutMessage, setOverflowMsg, setSkipRowCount, setStopError, setStopZero, setTableId, setTrace, setUseBeforeHtmlTag, setXssCheck`

クラス org.opengion.hayabusa.taglib.CommonTagSupport から継承されたメソッド
`add, add, addEventColumn, addEventColumn, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsglbl, getNVLAttri, getObject, getParameterNames, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseKey, 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`

フィールドの詳細

### CMD_ENTRY

    public static final java.lang.String CMD_ENTRY

  command 引数に渡す事の出来る コマンド 登録"ENTRY"

  関連項目:
    定数フィールド値

コンストラクタの詳細

### TableUpdateTag

    public TableUpdateTag()

メソッドの詳細

### doStartTag

    public int doStartTag()

  Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。

  定義:
    インタフェース `javax.servlet.jsp.tagext.Tag` 内の `doStartTag`
  オーバーライド:
    クラス `QueryTag` 内の `doStartTag`
  戻り値:
    後続処理の指示( EVAL_BODY_BUFFERED )
  変更履歴:

    4.0.0.0 (2007/11/14) 0件の場合でもstartQueryTransactionを通すように変更
    5.1.7.0 (2010/06/01) quotCheckを指定できるようにする。※但し、初期値はfalse固定。

### doEndTag

    public int doEndTag()

  Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。

  定義:
    インタフェース `javax.servlet.jsp.tagext.Tag` 内の `doEndTag`
  オーバーライド:
    クラス `QueryTag` 内の `doEndTag`
  戻り値:
    後続処理の指示
  変更履歴:

    4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage > getResource().getLabel )

### release2

    protected void release2()

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

  オーバーライド:
    クラス `QueryTag` 内の `release2`
  変更履歴:

    4.0.2.0 (2007/12/25) commitTableModel追加
    4.1.2.0 (2008/03/12) sqlType追加
    5.1.7.0 (2010/06/01) quotCheckを指定できるようにする。※但し、初期値はfalse固定。

### execute

    protected void execute(Query query)

  Query を実行します。

  オーバーライド:
    クラス `QueryTag` 内の `execute`
  パラメータ:
    `query` - オブジェクト
  変更履歴:

    4.0.2.0 (2007/12/25) commitTableModel追加

### getParameterRows

    protected int[] getParameterRows()

  表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行番号の 配列を返します。 ここでは、conditionKey に値が設定されている場合は、そのカラムの値が conditionList にマッチする場合のみ対象選択行として返します。 値がセットされていない場合は、通常のCommonTagSupport#getParameterRows() が呼ばれます。 なにも選ばれていない場合は、サイズ０の配列を返します。

  オーバーライド:
    クラス `CommonTagSupport` 内の `getParameterRows`
  戻り値:
    (選ばれていない場合は、サイズ０の配列を返す)
  変更履歴:

    4.3.2.0 (2008/09/09) followCdkh属性対応

### setQueryType

    public void setQueryType(java.lang.String id)

  【TAG】Query を発行する為のクラスIDを指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=5.6.5.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBCTableUpdate</a>)。

  オーバーライド:
    クラス `QueryTag` 内の `setQueryType`
  パラメータ:
    `id` - Query を発行する為の実クラス ID
  関連項目:
    `Queryのサブクラス`, `Query.execute( int[] ,DBTableModel )`
  説明:

         引数指定のINSERT/UPDATE文を実行する場合の、queryType 属性を使用します。
         このタグでは、execute( int[] ,DBTableModel )を実行します。
         代表的なクラスとして、"JDBCTableUpdate" が標準で用意されています。

         タグにより使用できる／出来ないがありますが、これは、org.opengion.hayabusa.db
         以下の Query_**** クラスの **** を与えます。
         これらは、Query インターフェースを継承したサブクラスです。
         {@og.doc03Link queryType Query_**** クラス}

### setResourceType

    public void setResourceType(java.lang.String type)

  【特殊】クリアするリソースの種類[GEA03/GEA04/GEA08]を指定します。

  パラメータ:
    `type` - クリアするリソースタイプ [GEA03/GEA04/GEA08]
  説明:

         注意：この属性は、リソース関連DBのメンテナンス時にのみ、内部リソースキャッシュを
         クリアする目的で使用します。一般の属性としては、使用することはないため、
         ご注意ください。
         リソース関連のテーブルを更新した場合、リソースキャッシュをクリアして
         置かないと、データベースの値が反映されません。
         昔は、リソースの更新ごとに、全件クリアしていましたが、部分クリアが
         できるようになったため、部分クリアを行います。
         こでは、(GEA03,GEA04,GEA08) のどれかを指定してください。

### setConditionKey

    public void setConditionKey(java.lang.String key)

  【TAG】条件判定するカラムＩＤを指定します(初期値:null)。

  パラメータ:
    `key` - 条件判定するカラムＩＤ
  関連項目:
    `setConditionList( String )`
  説明:

         指定のカラムＩＤの値と、conditionList の値を比較して、
         存在する場合は、Query 処理を実行します。
         例えば、conditionKey="CDKH" として、conditionList="A" とすれば、
         改廃コードが"A"のデータで、かつ選択されたデータのみを処理します。
         設定しない場合は、通常の処理と同様に、選択行のみ処理されます。

### setConditionList

    public void setConditionList(java.lang.String list)

  【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件)。

  パラメータ:
    `list` - 値のリスト("|"区切)
  関連項目:
    `setConditionKey( String )`
  説明:

         conditionKey とペアで指定します。ここには、カラムの設定値のリストを
         指定することで、複数条件(ＯＲ結合)での比較を行い、リストにカラム値が
         存在する場合のみ、Query 処理を実行します。
         値が設定されている場合は、その値とマッチする必要があります。なにもセット
         されない場合、または、null の場合は、null データとマッチする場合のみ処理
         されますので、ご注意ください。

### setSelectedAll

    public void setSelectedAll(java.lang.String all)

  【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。

  パラメータ:
    `all` - データを全件選択済み [true:全件選択済み/false:通常]
  説明:

         全てのデータを選択済みデータとして扱って処理します。
         全件処理する場合に、(true/false)を指定します。
         初期値は false です。

### setCommitTableModel

    public void setCommitTableModel(java.lang.String commitTblMdl)

  【特殊】SQL実行後に結果をDBTableModelに反映させるかどうか[true/false]を指定します(初期値:true)。

  パラメータ:
    `commitTblMdl` - テーブルモデルへ反映する [true:反映する/false:反映しない]
  説明:

         注意：この属性は、リソース関連DBのメンテナンス時に、複数DBへの登録を行うための、
         暫定対応として定義しています。
         falseにした場合は、実データとDBTableModelの整合性が取れなくなるため、使用には十分注して下さい。
         初期値は true です。

  変更履歴:

    4.0.2.0 (2007/12/25) 新規作成

### getNames

    protected java.lang.String[] getNames()

  引数の名称配列

  戻り値:
    名称配列

### setSqlType

    public void setSqlType(java.lang.String type)

  【TAG】BODY部に書かれている Param の SQLタイプを指定します。

  パラメータ:
    `type` - BODY部に書かれている SQL タイプ
  説明:

         TableUpdateParamTag は、上位の TableUpdateTag の sqlType 属性 と同じ
         sqlType 属性の場合のみ、SQL文を合成・出力します。
         つまり、TableUpdateTag側のsqlType 属性をパラメータに、TableUpdateParamTag
         の sqlType 属性を固定値にすることで、どのパラメータを使用するかを
         選択できる機能を実現する事が可能です。

  変更履歴:

    4.1.2.0 (2008/03/12) 新規追加

### setFollowCdkh

    public void setFollowCdkh(java.lang.String flg)

  【TAG】DBTableModelの改廃Cに従って処理を行うかを指定します。

  パラメータ:
    `flg` - DBTableModelの改廃Cに従って処理を行うか
  説明:

         この属性は、sqlTypeが指定されている場合のみ有効です。
         sqlTypeが指定されている場合、そのsqlTypeに対応した、改廃Cが設定されている
         行のみを処理します。
         対応関係は、以下の通りです。
          sqlType = "INSERT" or "COPY" -> 改廃C='A'のみ処理
          sqlType = "UPDATE" or "CHANGE" -> 改廃C='C'のみ処理
          sqlType = "DELETE" -> 改廃C='D'のみ処理

  変更履歴:

    4.3.2.0 (2008/09/09) 新規追加

### setQuotCheck

    public void setQuotCheck(java.lang.String flag)

  【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:false)。

  オーバーライド:
    クラス `QueryTag` 内の `setQuotCheck`
  パラメータ:
    `flag` - クォーティションチェック [true:する/それ以外:しない]
  説明:

         ＳＱＬインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに
         渡す文字列にクォーティション(') を許さない設定にすれば、ある程度は防止できます。
         数字タイプの引数には、 or 5=5 などのクォーティションを使用しないコードを埋めても、
         数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、
         ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。
         (') が含まれていたエラーにする(true)／かノーチェックか(false)を指定します。
         ※(他のタグは、システムリソースのUSE_SQL_INJECTION_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK}])
         ですが、JSPの互換性を考慮し、初期値を固定でfalseにしています)

  変更履歴:

    5.1.7.0 (2010/06/01) 新規追加

### getSqlType

    protected java.lang.String getSqlType()

  SQLタイプを返します。

  戻り値:
    SQLタイプ
  変更履歴:

    4.1.2.0 (2008/03/12) 新規追加

### toString

    public java.lang.String toString()

  このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。

  オーバーライド:
    クラス `QueryTag` 内の `toString`
  戻り値:
    このクラスの文字列表現
  変更履歴:

    4.0.2.0 (2007/12/25) resourceColumn、commitTableModel追加

概要 | パッケージ | クラス | 階層ツリー | 非推奨 API | 索引 | ヘルプ
| openGion 5.6.5.0
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

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