|
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjavax.servlet.jsp.tagext.TagSupport
javax.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.QueryTag
org.opengion.hayabusa.taglib.TableUpdateTag
public class TableUpdateTag
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) 新規作成 |
フィールドの概要 | |
---|---|
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.8.1.1&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 |
クラス 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 |
フィールドの詳細 |
---|
public static final java.lang.String CMD_ENTRY
コンストラクタの詳細 |
---|
public TableUpdateTag()
メソッドの詳細 |
---|
public int doStartTag()
Tag
内の doStartTag
QueryTag
内の doStartTag
4.0.0.0 (2007/11/14) 0件の場合でもstartQueryTransactionを通すように変更 |
5.1.7.0 (2010/06/01) quotCheckを指定できるようにする。※但し、初期値はfalse固定。 |
public int doEndTag()
Tag
内の doEndTag
QueryTag
内の doEndTag
4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel ) |
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固定。 |
protected void execute(Query query)
QueryTag
内の execute
query
- オブジェクト4.0.2.0 (2007/12/25) commitTableModel追加 |
protected int[] getParameterRows()
CommonTagSupport
内の getParameterRows
4.3.2.0 (2008/09/09) followCdkh属性対応 |
public void setQueryType(java.lang.String id)
QueryTag
内の setQueryType
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(java.lang.String type)
type
- クリアするリソースタイプ [GEA03/GEA04/GEA08]注意:この属性は、リソース関連DBのメンテナンス時にのみ、内部リソースキャッシュを クリアする目的で使用します。一般の属性としては、使用することはないため、 ご注意ください。 リソース関連のテーブルを更新した場合、リソースキャッシュをクリアして 置かないと、データベースの値が反映されません。 昔は、リソースの更新ごとに、全件クリアしていましたが、部分クリアが できるようになったため、部分クリアを行います。 こでは、(GEA03,GEA04,GEA08) のどれかを指定してください。
public void setConditionKey(java.lang.String key)
key
- 条件判定するカラムIDsetConditionList( String )
指定のカラムIDの値と、conditionList の値を比較して、 存在する場合は、Query 処理を実行します。 例えば、conditionKey="CDKH" として、conditionList="A" とすれば、 改廃コードが"A"のデータで、かつ選択されたデータのみを処理します。 設定しない場合は、通常の処理と同様に、選択行のみ処理されます。
public void setConditionList(java.lang.String list)
list
- 値のリスト("|"区切)setConditionKey( String )
conditionKey とペアで指定します。ここには、カラムの設定値のリストを 指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が 存在する場合のみ、Query 処理を実行します。 値が設定されている場合は、その値とマッチする必要があります。なにもセット されない場合、または、null の場合は、null データとマッチする場合のみ処理 されますので、ご注意ください。
public void setSelectedAll(java.lang.String all)
all
- データを全件選択済み [true:全件選択済み/false:通常]全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、(true/false)を指定します。 初期値は false です。
public void setCommitTableModel(java.lang.String commitTblMdl)
commitTblMdl
- テーブルモデルへ反映する [true:反映する/false:反映しない]注意:この属性は、リソース関連DBのメンテナンス時に、複数DBへの登録を行うための、 暫定対応として定義しています。 falseにした場合は、実データとDBTableModelの整合性が取れなくなるため、使用には十分注して下さい。 初期値は true です。
4.0.2.0 (2007/12/25) 新規作成 |
protected java.lang.String[] getNames()
public void setSqlType(java.lang.String type)
type
- BODY部に書かれている SQL タイプTableUpdateParamTag は、上位の TableUpdateTag の sqlType 属性 と同じ sqlType 属性の場合のみ、SQL文を合成・出力します。 つまり、TableUpdateTag側のsqlType 属性をパラメータに、TableUpdateParamTag の sqlType 属性を固定値にすることで、どのパラメータを使用するかを 選択できる機能を実現する事が可能です。
4.1.2.0 (2008/03/12) 新規追加 |
public void setFollowCdkh(java.lang.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(java.lang.String flag)
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) 新規追加 |
protected java.lang.String getSqlType()
4.1.2.0 (2008/03/12) 新規追加 |
public java.lang.String toString()
QueryTag
内の toString
4.0.2.0 (2007/12/25) resourceColumn、commitTableModel追加 |
|
openGion 5.8.1.1 | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |