public class SqlAndTag extends CommonTagSupport
Where句を作成するための条件を指定します。
このタグのvalue 値に、{@XXXX} 変数が含まれている場合、そのリクエスト値が
ない場合は、このタグそのものがなにも出力しません。(つまり条件から消えます。)
startKeyは、value を連結する場合の頭に置かれる文字列で、where句の最初には表示されず、
それ以降について、表示されます。(つまり、where VALUE1 and VALUE2 and VALUE3 … です。)
startKey の初期値は、"and" です。
multi は、{@XXXX} 変数に、値が複数含まれている場合の処理を規定します。
複数の値とは、同一nameでチェックボックス指定や、メニューでの複数指定した場合、
リクエストが配列で送られます。multi="true" とすると、'xx1','xx2','xx3', ・・・ という
形式に変換されます。
具体的には、"where PN in ( {@PN} )" という文字列に対して、
"where PN in ( 'xx1','xx2','xx3' )" を作成することができます。
multi の初期値は、"false" です。
SystemData の USE_SQL_INJECTION_CHECK が true か、quotCheck 属性が true の場合は、
SQLインジェクション対策用のシングルクォートチェックを行います。リクエスト引数に
シングルクォート(')が含まれると、エラーになります。
同様にUSE_XSS_CHECKがtrueか、xssCheck属性がtrueの場合は、
クロスサイトススクリプティング(XSS)対策のためless/greater than signのチェックを行います。
各属性は、{@XXXX} 変数が使用できます。
これは、ServletRequest から、XXXX をキーに値を取り出し,この変数に割り当てます。
つまり、このXXXXをキーにリクエストすれば、この変数に値をセットすることができます。 ●形式:<og:and startKey="[and|or|…]" value="…" multi="[false|true]" />
●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)
●Tag定義:
<og:and
startKey 【TAG】SQL条件句の最初の演算子を指定します(初期値:and)
value 【TAG】条件の値を セットします
multi 【TAG】複数の引数に対して処理するかどうか[true/false]を設定します(初期値:false)
separator 【TAG】multi アクション時の文字列を分割する項目区切り文字をセットします
instrVals 【TAG】スペースで区切られた複数の値すべてを含む条件を作成します
instrType 【TAG】instrValsで複数の値を条件にする際の方法を指定します(初期値:and)
range 【TAG】数値型カラムに対して、ハイフンで範囲指定をカンマに分解するかどうか[true/false]を設定します(初期値:false) 6.5.0.0 (2016/09/30)
placeHolder 【TAG】value の?に設定する値を指定します。(queryType="JDBCPrepared"専用)
quotCheck 【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=true])
xssCheck 【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=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:and>
●使用例
<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=AAA , YOBI=BBB)
作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = 'AAA' and YOBI like 'BBB%' order by PN
・検索条件が片方入力されなかった時(PNがNULLのとき, YOBI=BBB)
作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where YOBI like 'BBB%' order by PN
・検索条件が入力されなかった時(PNがNULL, YOBIがNULL) WHERE句がなくなる。
作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 order by PN
注意:WhereTagを使わない場合に、検索条件が入力されなかった場合は、下記のようになります。
select PN,YOBI,NMEN,HINM from XX01 where 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 in ({@YOBI})" multi="true" />
<og:and value="HINM like '{@HINM}%'" />
</og:where>
order by PN
</og:query>
・YOBI を複数選択し、in で検索する時(YOBI=AA,BB,CC を選択)
作成されるSQL文⇒select PN,YOBI,NMEN,HINM from XX01 where PN = '11111'
and YOBI in ( 'AA','BB','CC' ) and HINM like 'BBB%' order by PN
--------------------------------------------------------------------------------------------------------------
placeHolderを利用する場合の利用例。
queryタグのqueryTypeはJDBCPrepared専用です。
なお、multi 使用時は、バインド変数は、一つのみ指定可能です。
<og:query command="NEW" queryType="JDBCPrepared">
SELECT * FROM XX01
<og:where>
<og:and value="K01 = ?" placeHolder="{@VAL1}" />
<og:and value="K02 LIKE ?" placeHolder="{@VAL2}%" />
<og:and value="K03 IN (?)" multi="true" placeHolder="{@VAL3}" />
<og:and value="K04 = ? || ?" placeHolder="{@VAL4},{@VAL5}" />
</og:where>
</og:query>BR, BUFFER_MIDDLE, CRbodyContentid, pageContextEVAL_BODY_BUFFERED, EVAL_BODY_TAGEVAL_BODY_AGAINEVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE| コンストラクタと説明 |
|---|
SqlAndTag()
デフォルトコンストラクター
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
int |
doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
|
int |
doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
|
protected java.lang.String |
getRequestValue(java.lang.String key)
リクエスト情報の文字列を取得します。
|
protected java.lang.String |
getTagName()
タグの名称を、返します。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setInstrType(java.lang.String tp)
【TAG】instrValsで複数の値を条件にする際の方法を指定します(初期値:and)。
|
void |
setInstrVals(java.lang.String val)
【TAG】特定の文字で区切られた複数の値すべてを含む条件を作成します。
|
void |
setMulti(java.lang.String flag)
【TAG】複数の引数に対して処理するかどうか[true/false]を設定します(初期値:false)。
|
void |
setPlaceHolder(java.lang.String val)
【TAG】プレースホルダーのvalueの条件作成を判定します(JDBCParepared用)。
|
void |
setQuotCheck(java.lang.String flag)
【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します
(初期値:USE_SQL_INJECTION_CHECK[=])。
|
void |
setRange(java.lang.String flag)
【TAG】数値型カラムに対して、ハイフンで範囲指定をカンマに分解するかどうか[true/false]を設定します(初期値:false)。
|
void |
setSeparator(java.lang.String sepa)
【TAG】multi アクション/instrVals 時の文字列を分割する項目区切り文字をセットします。
|
void |
setStartKey(java.lang.String skey)
【TAG】SQL条件句の最初の演算子を指定します(初期値:and)。
|
void |
setValue(java.lang.String val)
【TAG】条件の値を セットします。
|
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, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, 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, useXssCheckdoInitBody, getBodyContent, getPreviousOut, release, setBodyContentfindAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValueclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetParent, setPageContext, setParentpublic SqlAndTag()
public int doStartTag()
doStartTag インタフェース内 TagdoStartTag クラス内 CommonTagSupportpublic int doAfterBody()
doAfterBody インタフェース内 IterationTagdoAfterBody クラス内 CommonTagSupportpublic int doEndTag()
doEndTag インタフェース内 TagdoEndTag クラス内 CommonTagSupportprotected void release2()
release2 クラス内 CommonTagSupportprotected java.lang.String getRequestValue(java.lang.String key)
getRequestValue クラス内 CommonTagSupportkey - キーpublic void setStartKey(java.lang.String skey)
skey - 条件句の最初の演算子public void setValue(java.lang.String val)
val - 条件値public void setInstrVals(java.lang.String val)
val - 複合条件作成のための設定値setInstrType(java.lang.String),
ColumnMarkerTag.setInstrVals( String )public void setInstrType(java.lang.String tp)
tp - 条件方法 [and/or/in/notin]setInstrVals( String )public void setMulti(java.lang.String flag)
flag - マルチ変換 [true:する/それ以外:しない]setSeparator( String )public void setSeparator(java.lang.String sepa)
sepa - 項目区切り文字(正規表現)setMulti( String )public void setRange(java.lang.String flag)
flag - 範囲変換 [true:する/それ以外:しない]public void setPlaceHolder(java.lang.String val)
val - 値public void setQuotCheck(java.lang.String flag)
flag - クォートチェック [true:する/それ以外:しない]SystemData.USE_SQL_INJECTION_CHECKpublic void setXssCheck(java.lang.String flag)
flag - XSSチェック [true:する/false:しない]SystemData.USE_XSS_CHECKprotected java.lang.String getTagName()
getTagName クラス内 CommonTagSupportCommonTagSupport.getDocumentLink()public java.lang.String toString()
toString クラス内 CommonTagSupportWebアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.