public class QueryTag extends CommonTagSupport
データベースの検索を行うタグです。 このタグの内容に、SQL文を記述します。 whereタグ、 andタグ を使うと引数に応じて 実行されるSQL文が異なります(使用例参照)。 また、PL/SQLのSPで検索を行うときもこのタグを使います。 SystemData の USE_SQL_INJECTION_CHECK が true か、quotCheck 属性が true の場合は、 SQLインジェクション対策用のシングルクォートチェックを行います。リクエスト引数に シングルクォート(')が含まれると、エラーになります。 同様にUSE_XSS_CHECKがtrueか、xssCheck属性がtrueの場合は、 クロスサイトススクリプティング(XSS)対策のためless/greater than signのチェックを行います。 実行後にリクエストパラメータに以下の値がセットされます。 DB.COUNT : 検索結果の件数 DB.ERR_CODE : 検索結果のエラーコード DB.IS_UPDATE : 更新(=true)/検索(false) ※ このタグは、Transaction タグの対象です。
●形式: ・<og:query command="NEW" > SELECT文 </og:query> ・<og:query command="NEW" names="・・・" queryType="JDBCErrMsg" > { call PL/SQL(?,?,?,? ) } </og:query> ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) ●Tag定義: <og:query queryType 【TAG】Query を発行する為のクラスID(JDBC,JDBCCallable,JDBCErrMsg,JDBCUpdate,JDBCPrepared)を指定します<a href="/gf/jsp/DOC03/index.jsp?command=NEW&GAMENID=DOC03&VERNO=7.0.3.1&VALUENAME=queryType" target="CONTENTS">初期値:JDBC</a>) command 【TAG】コマンド (NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY) scope 【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session) maxRowCount 【TAG】(通常は使いません)データの最大読み込み件数を指定します (初期値:DB_MAX_ROW_COUNT[=1000])(0:[無制限]) skipRowCount 【TAG】(通常は使いません)データの読み始めの初期値を指定します displayMsg 【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します (初期値:VIEW_DISPLAY_MSG[=]) overflowMsg 【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました]) notfoundMsg 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした]) names 【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します stopZero 【TAG】検索結果が0件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する]) tableId 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します dbid 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します trace 【TAG】引数の SQL 文を EXPLAIN PLAN を[true:行う/それ以外:行わない]を指定します(初期値:false) checkNames 【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します modifyType 【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除] stopError 【TAG】PLSQL/SQL処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true) dispError 【TAG】エラー時にメッセージを表示するか[true/false]を設定します。通常はstopErrorと併用(初期値:true) quotCheck 【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します(初期値:USE_SQL_INJECTION_CHECK) xssCheck 【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=true]) mainTrans 【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true) useBeforeHtmlTag 【TAG】処理時間(queryTime)などの情報出力[true:有効/false:無効]を指定します(初期値:true) useTimeView 【TAG】処理時間を表示する TimeView を表示するかどうかを指定します (初期値:VIEW_USE_TIMEBAR[=true])。 caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) > ... Body ... </og:query> ●使用例 <og:query command="NEW"> select PN,YOBI,NMEN,HINM from XX01 where PN = '{@PN}' order by PN </og:query> ・検索条件が入力された時({@PN}がNOT NULLのとき) 作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = 'AAA' order by PN ・検索条件が入力されなかった時({@PN}がNULLのとき) 作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = '' order by PN <og:query command="NEW"> select PN,YOBI,NMEN,HINM from XX01 <og:where> <og:and value="PN = '{@PN}%'" /> <og:and value="YOBI like '{@YOBI}%'" /> </og:where> order by PN </og:query> ・検索条件が入力された時({@PN}がNOT NULLのとき) 作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 PN = 'AAA%' and YOBI like 'BBB%' order by PN ・検索条件が入力されなかった時({@PN}がNULLのとき) WHERE句がなくなる。 作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 order by PN 注意:WhereTagを使った場合、下のようにはなりません。 select PN,YOBI,NMEN,HINM from XX01 PN = '' and YOBI like '%' order by PN <og:query command="NEW"> select PN,YOBI,NMEN,HINM from XX01 where PN="11111" <og:where startKey="and"> <og:and value="YOBI like '{@PN}%'" /> </og:where> order by PN </og:query> ・検索条件が入力された時({@YOBI}がNOT NULLのとき) 作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 PN = '11111' and YOBI like 'BBB%' order by PN ・検索条件が入力されなかった時({@YOBI}がNULLのとき) WHERE句がなくなる。 作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 PN = '11111' order by PN <og:query command = "NEW" names = "SYSTEM_ID,LANG,CLM,NAME_JA,LABEL_NAME,KBSAKU,USER.ID" checkNames = "CLM,NAME_JA" queryType = "JDBCErrMsg" displayMsg = ""> {call TYPE3B01.TYPE3B01(?,?,?,?)} </og:query> ・queryType に JDBCErrMsg を指定して、PL/SQL をコールできます。 引数は、names 属性をキーにリクエスト変数から読み込みます。 ・checkNames にカラム名を指定すると、columns.valueSet による リクエスト変数の正規化を行います。
修飾子とタイプ | フィールドと説明 |
---|---|
static java.lang.String |
CMD_NEW
command 引数に渡す事の出来る コマンド 新規 "NEW"
|
static java.lang.String |
CMD_RENEW
command 引数に渡す事の出来る コマンド 再検索 "RENEW"
|
protected java.lang.String |
command |
protected boolean |
dispError |
protected java.lang.String |
displayMsg |
protected long |
dyStart |
protected static java.lang.String |
ERR_MSG_ID
エラーメッセージID "h_errMsg"
|
protected int |
errCode |
protected ErrorMessage |
errMessage |
protected int |
executeCount |
protected int |
maxRowCount |
protected java.lang.String |
names |
protected boolean |
outMessage |
protected boolean |
quotCheck |
protected int |
skipRowCount |
protected java.lang.String |
sql |
protected boolean |
stopError |
protected DBTableModel |
table |
protected java.lang.String |
tableId |
protected boolean |
useTimeView |
protected boolean |
xssCheck |
BR, BUFFER_MIDDLE, CR
bodyContent
id, pageContext
EVAL_BODY_BUFFERED, EVAL_BODY_TAG
EVAL_BODY_AGAIN
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
コンストラクタと説明 |
---|
QueryTag()
デフォルトコンストラクター
|
修飾子とタイプ | メソッドと説明 |
---|---|
protected void |
addPlaceValue(java.lang.String val)
子タグ(andタグ)でプレースホルダーを設定した時に利用するメソッドです。
|
int |
doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
|
int |
doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
|
protected void |
execute(Query query)
Query を実行します。
|
protected java.lang.String[] |
getRequest(java.lang.String[] nameArray)
名称配列を元に、リクエスト情報のデータを取得します。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setCheckNames(java.lang.String nm)
【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します。
|
void |
setCommand(java.lang.String cmd)
【TAG】コマンド (NEW,RENEW)をセットします(PlsqlUpdateTag,UpdateTag の場合は、ENTRY)。
|
void |
setDbid(java.lang.String id)
【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
|
void |
setDispError(java.lang.String flag)
【TAG】PLSQL/SQL処理エラーの時にエラーを画面表示するか[true/false]を設定します(初期値:true)。
|
void |
setDisplayMsg(java.lang.String id)
【TAG】検索結果を画面上に表示するメッセージリソースIDを指定します
(初期値:VIEW_DISPLAY_MSG[=])。
|
void |
setMainTrans(java.lang.String flag)
【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:true)。
|
void |
setMaxRowCount(java.lang.String count)
【TAG】(通常は使いません)データの最大読み込み件数を指定します
(初期値:DB_MAX_ROW_COUNT[=])。
|
void |
setModifyType(java.lang.String type)
【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除]。
|
void |
setNames(java.lang.String nm)
【TAG】PL/SQLを利用する場合の引数にセットすべき データの名称をCSV形式で複数指定します。
|
void |
setNotfoundMsg(java.lang.String id)
【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])。
|
void |
setOutMessage(java.lang.String flag)
【TAG】検索結果のメッセージを表示する/しない[true/false]を指定します(初期値:true)。
|
void |
setOverflowMsg(java.lang.String id)
【TAG】検索データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します
(初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])。
|
void |
setQueryType(java.lang.String id)
【TAG】Query を発行する為のクラスID(JDBC,JDBCCallable,JDBCErrMsg,JDBCUpdate,JDBCPrepared)を指定します()。
|
void |
setQuotCheck(java.lang.String flag)
【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します
(初期値:USE_SQL_INJECTION_CHECK[=])。
|
void |
setSkipRowCount(java.lang.String count)
【TAG】(通常は使いません)データの読み始めの初期値を指定します。
|
void |
setStopError(java.lang.String flag)
【TAG】PLSQL/SQL処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。
|
void |
setStopZero(java.lang.String cmd)
【TAG】検索結果が0件のとき処理を停止するかどうか[true/false]を指定します(初期値:false[続行する])。
|
void |
setTableId(java.lang.String id)
【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
(初期値:HybsSystem#TBL_MDL_KEY[=])。
|
void |
setTrace(java.lang.String flag)
【TAG】引数の SQL 文を EXPLAIN PLAN を[true:行う/それ以外:行わない]を指定します(初期値:false)。
|
void |
setUseBeforeHtmlTag(java.lang.String useTag)
【TAG】 処理時間(queryTime)などの情報出力[true:有効/false:無効]を指定します(初期値:true)。
|
void |
setUseTimeView(java.lang.String flag)
【TAG】処理時間を表示する TimeView を表示するかどうか[true:する/false:しない]を指定します
(初期値:VIEW_USE_TIMEBAR[=])。
|
void |
setXssCheck(java.lang.String flag)
【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します
(初期値:USE_XSS_CHECK[=])。
|
java.lang.String |
toString()
このオブジェクトの文字列表現を返します。
|
add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, 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 static final java.lang.String CMD_NEW
public static final java.lang.String CMD_RENEW
protected static final java.lang.String ERR_MSG_ID
protected transient DBTableModel table
protected transient ErrorMessage errMessage
protected java.lang.String tableId
protected java.lang.String command
protected int skipRowCount
protected int maxRowCount
protected java.lang.String sql
protected int executeCount
protected java.lang.String names
protected boolean outMessage
protected int errCode
protected java.lang.String displayMsg
protected long dyStart
protected boolean useTimeView
protected boolean stopError
protected boolean dispError
protected boolean quotCheck
protected boolean xssCheck
public QueryTag()
public int doStartTag()
doStartTag
インタフェース内 Tag
doStartTag
クラス内 CommonTagSupport
public int doAfterBody()
doAfterBody
インタフェース内 IterationTag
doAfterBody
クラス内 CommonTagSupport
public int doEndTag()
doEndTag
インタフェース内 Tag
doEndTag
クラス内 CommonTagSupport
protected void release2()
release2
クラス内 CommonTagSupport
protected void execute(Query query)
query
- オブジェクトprotected java.lang.String[] getRequest(java.lang.String[] nameArray)
nameArray
- キーとなる名称の配列protected void addPlaceValue(java.lang.String val)
val
- 追加分public void setSkipRowCount(java.lang.String count)
count
- 読み始めの初期値public void setMaxRowCount(java.lang.String count)
count
- 最大件数SystemData.DB_MAX_ROW_COUNT
public void setTableId(java.lang.String id)
id
- テーブルID (sessionに登録する時のID)public void setQueryType(java.lang.String id)
id
- Query実クラスQueryのサブクラス
,
Query.execute( String[] )
Query
を参照願います。
public void setDbid(java.lang.String id)
id
- データベース接続IDpublic void setCommand(java.lang.String cmd)
cmd
- コマンド (public static final 宣言されている文字列)public void setStopZero(java.lang.String cmd)
cmd
- 0件時停止可否 [true:処理を中止する/false:続行する]public void setDisplayMsg(java.lang.String id)
id
- 表示メッセージIDSystemData.VIEW_DISPLAY_MSG
public void setOverflowMsg(java.lang.String id)
id
- オーバー時メッセージIDpublic void setNotfoundMsg(java.lang.String id)
id
- ゼロ件メッセージIDpublic void setNames(java.lang.String nm)
nm
- 引数の名称 (CSV形式)public void setOutMessage(java.lang.String flag)
flag
- 検索結果メッセージ [true:表示する/それ以外:含めない]public void setTrace(java.lang.String flag)
flag
- トレース [true:行う/それ以外:行わない]public void setCheckNames(java.lang.String nm)
nm
- 正規化処理カラム (CSV形式)public void setModifyType(java.lang.String type)
type
- Dモディファイタイプ [A:追加/C:更新/D:削除]public void setQuotCheck(java.lang.String flag)
flag
- クォートチェック [true:する/それ以外:しない]public void setXssCheck(java.lang.String flag)
flag
- XSSチェック [true:する/false:しない]SystemData.USE_XSS_CHECK
public void setStopError(java.lang.String flag)
flag
- エラー時処理中止 [true:中止する/false:中止しない]public void setDispError(java.lang.String flag)
flag
- [true:表示する/false:表示しない]public void setMainTrans(java.lang.String flag)
flag
- メイントランザクションかどうか [true:メイン/false:その他]public void setUseBeforeHtmlTag(java.lang.String useTag)
useTag
- 情報出力の有効/無効 [true:有効/false:無効]public void setUseTimeView(java.lang.String flag)
flag
- 処理時間を表示 [true:する/false:しない]public java.lang.String toString()
toString
クラス内 CommonTagSupport
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.