public class TableUpdateTag extends QueryTag
●形式:<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) 新規作成 |
修飾子とタイプ | フィールドと説明 |
---|---|
static String |
CMD_ENTRY
command 引数に渡す事の出来る コマンド 登録"ENTRY"
|
CMD_NEW, CMD_RENEW, command, displayMsg, dyStart, errCode, errMessage, errMsgId, executeCount, maxRowCount, names, outMessage, skipRowCount, sql, stopError, table, tableId, xssCheck
bodyContent
id, pageContext
EVAL_BODY_BUFFERED, EVAL_BODY_TAG
EVAL_BODY_AGAIN
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 String[] |
getNames()
引数の名称配列
|
protected int[] |
getParameterRows()
表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行番号の
配列を返します。
|
protected String |
getSqlType()
SQLタイプを返します。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setCommitTableModel(String commitTblMdl)
【特殊】SQL実行後に結果をDBTableModelに反映させるかどうか[true/false]を指定します(初期値:true)。
|
void |
setConditionKey(String key)
【TAG】条件判定するカラムIDを指定します(初期値:null)。
|
void |
setConditionList(String list)
【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件)。
|
void |
setFollowCdkh(String flg)
【TAG】DBTableModelの改廃Cに従って処理を行うかを指定します。
|
void |
setQueryType(String id)
【TAG】Query を発行する為のクラスIDを指定します(<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=5.9.16.0&VALUENAME=queryType" target="CONTENTS">初期値:JDBCTableUpdate</a>)。
|
void |
setQuotCheck(String flag)
【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:false)。
|
void |
setResourceType(String type)
【特殊】クリアするリソースの種類[GEA03/GEA04/GEA08]を指定します。
|
void |
setSelectedAll(String all)
【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
|
void |
setSqlType(String type)
【TAG】BODY部に書かれている Param の SQLタイプを指定します。
|
String |
toString()
このオブジェクトの文字列表現を返します。
|
doAfterBody, getRequest, setCheckNames, setCommand, setDbid, setDisplayMsg, setMainTrans, setMaxRowCount, setModifyType, setNames, setNotfoundMsg, setOutMessage, setOverflowMsg, setSkipRowCount, setStopError, setStopZero, setTableId, setTrace, setUseBeforeHtmlTag, setXssCheck
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, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserEditInfo, 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
doInitBody, getBodyContent, getPreviousOut, release, setBodyContent
findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getParent, setPageContext, setParent
public TableUpdateTag()
public int doStartTag()
doStartTag
インタフェース内 Tag
doStartTag
クラス内 QueryTag
4.0.0.0 (2007/11/14) 0件の場合でもstartQueryTransactionを通すように変更 |
5.1.7.0 (2010/06/01) quotCheckを指定できるようにする。※但し、初期値はfalse固定。 |
public int doEndTag()
protected void release2()
protected int[] getParameterRows()
getParameterRows
クラス内 CommonTagSupport
4.3.2.0 (2008/09/09) followCdkh属性対応 |
public void setQueryType(String id)
setQueryType
クラス内 QueryTag
id
- Query を発行する為の実クラス IDQueryのサブクラス
,
Query.execute( int[] ,DBTableModel )
引数指定のINSERT/UPDATE文を実行する場合の、queryType 属性を使用します。 このタグでは、execute( int[] ,DBTableModel )を実行します。 代表的なクラスとして、"JDBCTableUpdate" が標準で用意されています。 タグにより使用できる/出来ないがありますが、これは、org.opengion.hayabusa.db 以下の Query_**** クラスの **** を与えます。 これらは、Query インターフェースを継承したサブクラスです。 {@og.doc03Link queryType Query_**** クラス}
public void setResourceType(String type)
type
- クリアするリソースタイプ [GEA03/GEA04/GEA08]注意:この属性は、リソース関連DBのメンテナンス時にのみ、内部リソースキャッシュを クリアする目的で使用します。一般の属性としては、使用することはないため、 ご注意ください。 リソース関連のテーブルを更新した場合、リソースキャッシュをクリアして 置かないと、データベースの値が反映されません。 昔は、リソースの更新ごとに、全件クリアしていましたが、部分クリアが できるようになったため、部分クリアを行います。 こでは、(GEA03,GEA04,GEA08) のどれかを指定してください。
public void setConditionKey(String key)
key
- 条件判定するカラムIDsetConditionList( String )
指定のカラムIDの値と、conditionList の値を比較して、 存在する場合は、Query 処理を実行します。 例えば、conditionKey="CDKH" として、conditionList="A" とすれば、 改廃コードが"A"のデータで、かつ選択されたデータのみを処理します。 設定しない場合は、通常の処理と同様に、選択行のみ処理されます。
public void setConditionList(String list)
list
- 値のリスト("|"区切)setConditionKey( String )
conditionKey とペアで指定します。ここには、カラムの設定値のリストを 指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が 存在する場合のみ、Query 処理を実行します。 値が設定されている場合は、その値とマッチする必要があります。なにもセット されない場合、または、null の場合は、null データとマッチする場合のみ処理 されますので、ご注意ください。
public void setSelectedAll(String all)
all
- データを全件選択済み [true:全件選択済み/false:通常]全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、(true/false)を指定します。 初期値は false です。
public void setCommitTableModel(String commitTblMdl)
commitTblMdl
- テーブルモデルへ反映する [true:反映する/false:反映しない]注意:この属性は、リソース関連DBのメンテナンス時に、複数DBへの登録を行うための、 暫定対応として定義しています。 falseにした場合は、実データとDBTableModelの整合性が取れなくなるため、使用には十分注して下さい。 初期値は true です。
4.0.2.0 (2007/12/25) 新規作成 |
public void setSqlType(String type)
type
- BODY部に書かれている SQL タイプTableUpdateParamTag は、上位の TableUpdateTag の sqlType 属性 と同じ sqlType 属性の場合のみ、SQL文を合成・出力します。 つまり、TableUpdateTag側のsqlType 属性をパラメータに、TableUpdateParamTag の sqlType 属性を固定値にすることで、どのパラメータを使用するかを 選択できる機能を実現する事が可能です。
4.1.2.0 (2008/03/12) 新規追加 |
public void setFollowCdkh(String flg)
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) 新規追加 |
public void setQuotCheck(String flag)
setQuotCheck
クラス内 QueryTag
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) 新規追加 |
protected String getSqlType()
4.1.2.0 (2008/03/12) 新規追加 |
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.