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画面ですべて対応できるようになります。
- 関連項目:
- 直列化された形式
- 機能階層
- DB登録
- 形式サンプル:
●形式:<og:tableUpdate command="…" names="…" queryType="JDBCTableUpdate" >
<jsp:text>{@SQL}</jsp:text>
</og:update>
●body:あり
●使用例
・QUERYを他のJSPから渡す場合
【copy.jsp】
<og:hidden name="SQL" >
<jsp:text>
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}')
</jsp:text>
</og:value>
【entry.jsp】
<og:tableUpdate
command = "{@command}"
queryType = "JDBCTableUpdate"
<jsp:text>{@SQL}</jsp:text>
</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 ="…" : 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件)
<jsp:text>{@SQL}</jsp:text>
</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 |
メソッドの概要 |
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に反映させるかどうかを指定します。 |
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を指定します(初期値:JDBCTableUpdate)。 |
void |
setQuotCheck(java.lang.String flag)
【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか(true/false)を設定します(初期値:USE_SQL_INJECTION_CHECK)。 |
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, 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, getObject, getParameterNames, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setMsglbl, setNoTransitionRequest, setObject, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, 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
- 戻り値:
- int
- 変更履歴:
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
- 戻り値:
- int
- 変更履歴:
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
- 変更履歴:
4.3.2.0 (2008/09/09) followCdkh属性対応
return int[] (選ばれていない場合は、サイズ0の配列を返す) |
setQueryType
public void setQueryType(java.lang.String id)
- 【TAG】Query を発行する為のクラスIDを指定します(初期値:JDBCTableUpdate)。
- オーバーライド:
- クラス
QueryTag
内の setQueryType
- パラメータ:
id
- Query を発行する為の実クラス ID- 関連項目:
Queryのサブクラス
,
Query.execute( int[] ,DBTableModel )
- TagLib:
引数指定のINSERT/UPDATE文を実行する場合の、queryType 属性を使用します。
このタグでは、execute( int[] ,DBTableModel )を実行します。
代表的なクラスとして、"JDBCTableUpdate" が標準で用意されています。
タグにより使用できる/出来ないがありますが、これは、org.opengion.hayabusa.db
以下の Query_**** クラスの **** を与えます。
これらは、Query インターフェースを継承したサブクラスです。 |
setResourceType
public void setResourceType(java.lang.String type)
- 【特殊】クリアするリソースの種類を指定します(GEA03,GEA04,GEA08 のどれか)
- パラメータ:
type
- String クリアするリソースタイプ- TagLib:
注意:この属性は、リソース関連DBのメンテナンス時にのみ、内部リソースキャッシュを
クリアする目的で使用します。一般の属性としては、使用することはないため、
ご注意ください。
リソース関連のテーブルを更新した場合、リソースキャッシュをクリアして
置かないと、データベースの値が反映されません。
昔は、リソースの更新ごとに、全件クリアしていましたが、部分クリアが
できるようになったため、部分クリアを行います。
こでは、(GEA03,GEA04,GEA08) のどれかを指定してください。 |
setConditionKey
public void setConditionKey(java.lang.String key)
- 【TAG】条件判定するカラムIDを指定します(初期値は、null)
- パラメータ:
key
- String- 関連項目:
setConditionList( String )
- TagLib:
指定のカラムIDの値と、conditionList の値を比較して、
存在する場合は、Query 処理を実行します。
例えば、conditionKey="CDKH" として、conditionList="A" とすれば、
改廃コードが"A"のデータで、かつ選択されたデータのみを処理します。
設定しない場合は、通常の処理と同様に、選択行のみ処理されます。 |
setConditionList
public void setConditionList(java.lang.String list)
- 【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値は、無条件)
- パラメータ:
list
- String- 関連項目:
setConditionKey( String )
- TagLib:
conditionKey とペアで指定します。ここには、カラムの設定値のリストを
指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が
存在する場合のみ、Query 処理を実行します。
値が設定されている場合は、その値とマッチする必要があります。なにもセット
されない場合、または、null の場合は、null データとマッチする場合のみ処理
されますので、ご注意ください。 |
setSelectedAll
public void setSelectedAll(java.lang.String all)
- 【TAG】データを全件選択済みとして処理するかどうか(true/false)を指定します(初期値:false)。
- パラメータ:
all
- データを全件選択済み(true) / 通常(false)- TagLib:
全てのデータを選択済みデータとして扱って処理します。
全件処理する場合に、(true/false)を指定します。
初期値は false です。 |
setCommitTableModel
public void setCommitTableModel(java.lang.String commitTblMdl)
- 【特殊】SQL実行後に結果をDBTableModelに反映させるかどうかを指定します。(初期値:true)
- パラメータ:
commitTblMdl
- テーブルモデルへ反映する(true) / 反映しない(false)- TagLib:
注意:この属性は、リソース関連DBのメンテナンス時に、複数DBへの登録を行うための、
暫定対応として定義しています。
falseにした場合は、実データとDBTableModelの整合性が取れなくなるため、使用には十分注して下さい。
初期値は true です。 |
- 変更履歴:
4.0.2.0 (2007/12/25) 新規作成 |
getNames
protected java.lang.String[] getNames()
- 引数の名称配列
- 戻り値:
- String[]
setSqlType
public void setSqlType(java.lang.String type)
- 【TAG】BODY部に書かれている Param の SQLタイプを指定します。
- パラメータ:
type
- BODY部に書かれている SQL タイプ- TagLib:
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に従って処理を行うか- TagLib:
この属性は、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)を設定します(初期値:USE_SQL_INJECTION_CHECK)。
- オーバーライド:
- クラス
QueryTag
内の setQuotCheck
- パラメータ:
flag
- クォーティションチェックする ("true")/しない (それ以外)- TagLib:
SQLインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに
渡す文字列にクォーティション(') を許さない設定にすれば、ある程度は防止できます。
数字タイプの引数には、 or 5=5 などのクォーティションを使用しないコードを埋めても、
数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、
' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。
(') が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。
初期値は、false です。
※(他のタグは、SystemData#USE_SQL_INJECTION_CHECK ですが、JSPの互換性を考慮し、
初期値を固定でfalseにしています) |
- 変更履歴:
5.1.7.0 (2010/06/01) 新規追加 |
getSqlType
protected java.lang.String getSqlType()
- SQLタイプを返します。
- 戻り値:
- String[]
- 変更履歴:
4.1.2.0 (2008/03/12) 新規追加 |
toString
public java.lang.String toString()
- このオブジェクトの文字列表現を返します。
基本的にデバッグ目的に使用します。
- オーバーライド:
- クラス
QueryTag
内の toString
- 戻り値:
- このクラスの文字列表現
- 変更履歴:
4.0.2.0 (2007/12/25) resourceColumn、commitTableModel追加 |
Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.