|
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjavax.servlet.jsp.tagext.TagSupport
javax.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.TableUpdateParamTag
public class TableUpdateParamTag
TableUpdateTag にパラメーターを渡す為のタグクラスです。 汎用的なデータベース登録処理を行えるタグ tableUpdate タグを新規作成します。 これは、具体的なSLQを作成する tableUpdateParam タグと組み合わせて使用できます。 tableUpdate タグは、queryType に JDBCTableUpdate を指定します。基本的にこれだけ です。tableUpdateParam では、sqlType に、INSERT,COPY,UPDATE,MODIFY,DELETE の どれかを指定する事で、SQL文のタイプを指定します。COPY,MODIFY は command と 関連を持たす為に追加しているタイプで、INSERTやUPDATE と同じ処理を行います。 tableUpdateParam の table には、作成したい SQL のテーブルを指定します。 where 属性は、検索結果の DBTableModel の更新時に使用する条件を指定します。
●形式:<og:tableUpdate command="{@command}" queryType="JDBCTableUpdate" > <og:tableUpdateParam sqlType = "{@sqlType}" // INSERT,COPY,UPDATE,MODIFY,DELETE table = "{@TABLE_NAME}" // 処理対象のテーブル名 names = "{@names}" // 処理対象のカラム名 omitNames = "{@omitNames}" // 処理対象外のカラム名 where = "{@where}" // 処理対象を特定するキー constKeys = "{@constKeys}" // 処理カラム名の中の固定情報カラム名 constVals = "{@constVals}" // 処理カラム名の中の固定情報設定値 logicalDelete = "{@logicalDelete}" // sqlTypeがDELETEの場合にもUPDATE文を発行 /> </og:tableUpdate> ●body:なし ●使用例 ・【entry.jsp】 <og:tableUpdate command="{@command}" queryType="JDBCTableUpdate" > <og:tableUpdateParam sqlType = "{@sqlType}" table = "{@MEM.TABLE_NAME}" where = "ROWID = [ROWID]" /> </og:tableUpdate>
3.8.8.0 (2007/12/22) 新規作成 |
4.1.2.0 (2008/03/12) 実装の大幅な修正 |
フィールドの概要 | |
---|---|
static java.lang.String |
SQL_TYPE
sqlType属性に設定できる値 "|INSERT|COPY|UPDATE|MODIFY|DELETE|" |
クラス 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 |
コンストラクタの概要 | |
---|---|
TableUpdateParamTag()
|
メソッドの概要 | |
---|---|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 |
protected void |
release2()
タグリブオブジェクトをリリースします。 |
void |
setConstKeys(java.lang.String keys)
【TAG】設定値を固定値と置き換える対象となるカラム名をCSV形式で複数指定します。 |
void |
setConstObjKey(java.lang.String key)
【TAG】固定情報カラムの処理オブジェクトを特定するキーを設定します(初期値:SYSTEM_ID)。 |
void |
setConstVals(java.lang.String vals)
【TAG】設定値を固定値と置き換える対象となる設定値をCSV形式で複数指定します。 |
void |
setLogicalDelete(java.lang.String flg)
【TAG】sqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します。 |
void |
setNames(java.lang.String nms)
【TAG】処理対象のカラム名をCSV形式で複数指定します。 |
void |
setOmitNames(java.lang.String nms)
【TAG】処理対象外のカラム名をCSV形式で複数指定します。 |
void |
setQuotCheck(java.lang.String flag)
【TAG】リクエスト情報の クォーティション(') 存在チェックを実施するかどうか(true/false)を設定します(初期値:USE_SQL_INJECTION_CHECK)。 |
void |
setSqlType(java.lang.String type)
【TAG】BODY部に書かれている SQLタイプを指定します。 |
void |
setTable(java.lang.String tbl)
【TAG】処理対象のテーブル名を指定します。 |
void |
setWhere(java.lang.String wr)
【TAG】処理対象を特定するキー条件(where句)を指定します。 |
java.lang.String |
toString()
このオブジェクトの文字列表現を返します。 |
クラス 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 SQL_TYPE
コンストラクタの詳細 |
---|
public TableUpdateParamTag()
メソッドの詳細 |
---|
public int doEndTag()
javax.servlet.jsp.tagext.Tag
内の doEndTag
CommonTagSupport
内の doEndTag
4.3.7.0 (2009/06/01) 論理削除対応 |
protected void release2()
CommonTagSupport
内の release2
4.3.7.0 (2009/06/01) logicalDelete属性追加 |
public void setSqlType(java.lang.String type)
type
- BODY部に書かれている SQL タイプSQLタイプは、INSERT,COPY,UPDATE,MODIFY,DELETE の中から指定する 必要があります。これらは、内部に書かれるSQLの形式を指定するのに使用します。 内部処理は、DBTableModelの改廃コード(A,C,D)に対して使用される SQL を選択する場合の情報に使用されます。 なお、COPY と MODIFY は、command で指定できる簡易機能として用意しています。 上位の TableUpdateTag の sqlType 属性 と同じsqlType 属性の場合のみ、SQL文を 合成・出力します。(上位のsqlTypeがnullの場合は、無条件実行します。) 指定のタイプが、異なる場合は、なにも処理を行いません。
public void setTable(java.lang.String tbl)
tbl
- StringsetNames( String )
,
setWhere( String )
,
setSqlType( String )
テーブル名を指定することで、sqlTypeに応じた QUERYを生成することが出来ます。 生成する場合のカラムを特定する場合は、names 属性で指定できます。 また、WHERE条件は、where属性で指定します。
public void setNames(java.lang.String nms)
nms
- StringsetTable( String )
,
setOmitNames( String )
生成するQUERYのカラム名をカンマ区切り文字(CSV)で複数指定します。 指定がない場合は、DBTableModel の全カラム(※)を使用して、QUERYを構築します。 一般に、テーブル結合してDBTableModelを構築した場合は、登録すべきカラムを 指定する必要があります。 (※)正確には、DBTableModel の全カラムのうち、ROWID,ROWNUM,WRITABLE カラムは 無視します。 分解方法は、通常のパラメータ取得後に、CSV分解します。
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。 |
public void setOmitNames(java.lang.String nms)
nms
- StringsetTable( String )
,
setNames( String )
生成するQUERYのカラム名に指定しないカラム名をカンマ区切り文字(CSV)で複数指定します。 指定がない場合は、DBTableModel の全カラム(※)を使用して、QUERYを構築します。 テーブル結合などで、処理したくないカラム数の方が少ない場合に、names ですべてを 指定するより少ない記述ですみます。 (※)正確には、DBTableModel の全カラムのうち、ROWID,ROWNUM,WRITABLE カラムは 無視します。
public void setWhere(java.lang.String wr)
wr
- 検索条件(where句)生成するQUERYのwhere 句を指定します。通常の WHERE 句の書き方と同じで、 DBTableModelの値を割り当てたい箇所に[カラム名] を記述します。 文字列の場合、設定値をセットするときに、シングルコーテーションを 使用しますが、[カラム名]で指定する場合は、その前後に、(')シングル コーテーションは、不要です。 {@XXXX}変数を使用する場合は、パース時に固定文字に置き換えられる為、 文字列指定時の(')シングルコーテーションが必要になります。 例:FGJ='1' and CLM=[CLM] and SYSTEM_ID in ([SYSID],'**') and KBSAKU='{@KBSAKU}'
public void setConstKeys(java.lang.String keys)
keys
- StringsetConstVals( String )
names 属性のカラムや table 属性より、QUERYを作成して、DBTableModelの値を 割り当てる場合、DBTableModelの値ではなく、外部から指定した固定値を 割り当てたい場合に、そのカラム名をカンマ区切り文字(CSV)で複数指定します。 ここで指定するカラム名は、names 属性に含まれるか、DBTableModelのカラムとして 存在する必要があります。なお、names 属性に含まれる場合は、BTableModelのカラムに 含まれる必要はありません。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。
public void setConstVals(java.lang.String vals)
vals
- StringsetConstKeys( String )
names 属性のカラムや table 属性より、QUERYを作成して、DBTableModelの 値を割り当てる場合、DBTableModelの値ではなく、外部から指定した固定値を 割り当てたい場合に、そのカラム名に対応する設定値をカンマ区切り文字(CSV)で 複数指定します。ここで指定する設定値は、constKeys 属性と対応させます。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。
public void setQuotCheck(java.lang.String flag)
flag
- クォーティションチェックする ("true")/しない (それ以外)SystemData.USE_SQL_INJECTION_CHECK
SQLインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに 渡す文字列にクォーティション(') を許さない設定にすれば、ある程度は防止できます。 数字タイプの引数には、 or 5=5 などのクォーティションを使用しないコードを埋めても、 数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、 ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。 (') が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。 初期値は、システムパラメータのUSE_SQL_INJECTION_CHECK です。
public void setConstObjKey(java.lang.String key)
key
- 固定情報カラムの処理オブジェクトを特定するキー固定情報カラム をシステム単位にJavaクラスで管理できます。 そのクラスオブジェクトは、org.opengion.hayabusa.db.DBConstValue インターフェースを 継承した、plugin クラスになります。 そのクラスを特定するキーワードを指定します。 初期値は、SYSTEM_ID でシステム単位にクラスを作成します。 もし、他のシステムと共通の場合は、継承だけさせることも可能です。 対応したDBConstValueクラスがプラグインとして存在しない場合は、 システムリソースのDEFAULT_CONST_CLASSで指定されたクラスが利用されます。 初期値は、SYSTEM_ID です。
public void setLogicalDelete(java.lang.String flg)
flg
- 論理削除(UPDATE)を行うかどうかsqlType="DELETE"の場合に論理削除(UPDATE)を行うかどうかを指定します。 trueが指定された場合は、DELETE文ではなく、UPDATE文が発行されます。 falseが指定された場合は、DELETE文が発行されます。 さらに論理削除を行う場合、org.opengion.hayabusa.db.DBConstValue インターフェースに 定義されている、getLogicalDeleteKeys()及びgetLogicalDeleteValsを実装することで、 論理削除する際のフラグの更新方法を統一的に管理することが可能になります。 初期値は、false(物理削除する)です
public java.lang.String toString()
CommonTagSupport
内の toString
|
openGion 5.4.3.5 | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |