openGionopenGion
5.7.8.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:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)

 ●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】条件判定するカラムIDを指定します(初期値: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  ="…"      : 条件判定するカラムIDを指定(初期値は columnId )
            conditionList ="…"      : 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件)
        {@SQL}
        </og:tableUpdate>
変更履歴:
3.8.8.0 (2007/12/22) 新規作成
機能分類
DB登録
バージョン
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】条件判定するカラムIDを指定します(初期値: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.7.8.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, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, 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, 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
 

フィールドの詳細

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() が呼ばれます。 なにも選ばれていない場合は、サイズ0の配列を返します。

オーバーライド:
クラス CommonTagSupport 内の getParameterRows
戻り値:
(選ばれていない場合は、サイズ0の配列を返す)
変更履歴:
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.7.8.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】条件判定するカラムIDを指定します(初期値:null)。

パラメータ:
key - 条件判定するカラムID
関連項目:
setConditionList( String )
説明:
 指定のカラムIDの値と、conditionList の値を比較して、
 存在する場合は、Query 処理を実行します。
 例えば、conditionKey="CDKH" として、conditionList="A" とすれば、
 改廃コードが"A"のデータで、かつ選択されたデータのみを処理します。
 設定しない場合は、通常の処理と同様に、選択行のみ処理されます。

setConditionList

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

パラメータ:
list - 値のリスト("|"区切)
関連項目:
setConditionKey( String )
説明:
 conditionKey とペアで指定します。ここには、カラムの設定値のリストを
 指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が
 存在する場合のみ、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インジェクション対策の一つとして、暫定的ではありますが、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追加

openGion 5.7.8.0

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