public class DataCheckTag extends CommonTagSupport
画面で入力されたデータのチェックを行うためのタグです。 commandがNEWの場合は検索条件等のリクエストパラメータに対してチェックを行います。 commandがENTRYの場合は、登録時のDBテーブルモデルに対するチェックを行います。 (値の取得は、先に選択された行のみについて、実行されます。) チェックを行うための定義は、SQL文 又は JavaScriptの式が記述可能です。 これらの式はタグのボディー部分に記述します。 SQL文によりチェックを行う場合は、必ず件数が返されるように記述して下さい(select count(*) ・・・ 等) このSQL文で取得された件数とexistの属性値とを照合しチェックを行います。 いずれの場合も、成立時は、正常とみなします。 (「true:存在する」 には、データが存在した場合に、OKで、なければエラーです。) JavaScript式を記述する場合は、必ずtrue or falseを返す式を指定して下さい。 この式を評価した結果falseが返される場合は、エラーとみなします。 式に不等号等を使用する場合は、CDATAセクションで囲うようにして下さい。 また、いずれのチェック方法の場合でも、引数部に[カラム名]を用いたHybs拡張SQL文を 指定することが可能です。 メッセージIDの{0},{1}にはそれぞれ[カラム名]指定されたカラム名及びデータがCSV形式で 自動的に設定されます。 ※ このタグは、Transaction タグの対象です。
●形式: ・<og:dataCheck command = "{@command}" exist = "[auto|true|false|one|notuse]" errRemove = "[true|false]" lbl = "{@lbl}" lblParamKeys = "ZY03" : メッセージリソースのキーをCSV形式で指定。{2} 以降にセット sqlType = "{@sqlType}" execType = "INSERT|COPY|UPDATE|MODIFY|DELETE" : sqlType を含む場合、実行 conditionKey = "FGJ" : 条件判定するカラムIDを指定(初期値は columnId ) conditionList = "0|1|8|9" : 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件) uniqCheckClms = "CLM,LANG" : DBTableModel内でのユニークキーチェックを行うためのカラム > ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) (SQL文 又は JavaScript式) :なし( from属性、where属性を使用して、SQL文を内部で作成します) ●Tag定義: <og:dataCheck command 【TAG】コマンド (NEW or ENTRY)をセットします exist 【TAG】データベースのチェック方法[auto/true/false/one/notuse]を指定します(初期値:auto[自動]) tableId 【TAG】(通常は使いません)結果をDBTableModelに書き込んで、sessionに登録するときのキーを指定します dbid 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します(初期値:null) lbl 【TAG】ラベルリソースIDを指定します lblParamKeys 【TAG】ラベルリソースの引数をCSV形式で指定します errRemove 【TAG】エラー時の選択行を取り除いて継続処理を行うかどうか[true/false]を指定します(初期値:false) sqlType 【TAG】このチェックを行う、SQLタイプ を指定します execType 【TAG】このチェックを行う、実行タイプ を指定します conditionKey 【TAG】条件判定するカラムIDを指定します conditionList 【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件) uniqCheckClms 【TAG】指定されたキーに従って、メモリ上のテーブルに対してユニークキーチェックを行います beforeErrorJsp 【TAG】エラーが発生した際に、エラーメッセージの表示前にincludeするJSPを指定します afterErrorJsp 【TAG】エラーが発生した際に、エラーメッセージの表示後にincludeするJSPを指定します selectedAll 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false) msg 【廃止】メッセージIDを指定します(lbl 属性を使用してください) msgParamKeys 【廃止】メッセージリソースの引数をCSV形式で指定します(lblParamKeys 属性を使用してください) from 【TAG】tableExist タグ廃止に伴う、簡易機能追加。チェックするデータベース名(from 句)を指定します。 where 【TAG】tableExist タグ廃止に伴う、簡易機能追加。チェックする検索条件(where句)を指定します。 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:dataCheck> ●使用例 ・<og:dataCheck command = "ENTRY" exist = "true" lbl = "MSG0001" > select count(*) from GEA03 where clm = [CLM] </og:dataCheck> ・exist 属性の値に応じて、チェック方法が異なります。 [ auto , true , false , one , notuse が指定できます。] ・<og:dataCheck command = "ENTRY" lbl = "MSG0001" > <![CDATA[ [DYSTART] < [DY] && [DY] < [DYEND] ]]> </og:dataCheck> ・<og:dataCheck command = "ENTRY" lbl = "MSG0001" > <![CDATA[ [GOKEI] < [TANKA] * [RITU] ]]> </og:dataCheck> ※ og:tableExist タグが廃止されました。og:dataCheckタグで置き換えてください。 ・<og:tableExist command = "{@command}" names = "USERID,SYSTEM_ID" from = "GE10" where = "USERID=? AND SYSTEM_ID=?" exist = "true" /> ⇒ ・<og:dataCheck command = "{@command}" exist = "true" from = "GE10" where = "USERID=[USERID] AND SYSTEM_ID=[SYSTEM_ID]" /> ・<og:tableExist command = "{@command}" from = "GE10" where = "USERID=[USERID] AND SYSTEM_ID=[SYSTEM_ID]" /> ⇒ ・<og:dataCheck command = "{@command}" from = "GE10" where = "USERID=[USERID] AND SYSTEM_ID=[SYSTEM_ID]" /> />
4.1.1.1 (2008/02/22) 新規作成 |
修飾子とタイプ | フィールドと説明 |
---|---|
static java.lang.String |
CMD_ENTRY
command 引数に渡す事の出来る コマンド "ENTRY"
|
static java.lang.String |
CMD_NEW
command 引数に渡す事の出来る コマンド "NEW"
|
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
コンストラクタと説明 |
---|
DataCheckTag()
デフォルトコンストラクター
|
修飾子とタイプ | メソッドと説明 |
---|---|
int |
doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
|
int |
doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
|
protected int[] |
getParameterRows()
表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setAfterErrorJsp(java.lang.String jsp)
【TAG】エラーが発生した際に、エラーメッセージの表示後にincludeするJSPを指定します。
|
void |
setBeforeErrorJsp(java.lang.String jsp)
【TAG】エラーが発生した際に、エラーメッセージの表示前にincludeするJSPを指定します。
|
void |
setCommand(java.lang.String cmd)
【TAG】コマンド (NEW or ENTRY)をセットします。
|
void |
setConditionKey(java.lang.String key)
【TAG】条件判定するカラムIDを指定します(初期値:null)。
|
void |
setConditionList(java.lang.String list)
【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件)。
|
void |
setDbid(java.lang.String id)
【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します(初期値:null)。
|
void |
setErrRemove(java.lang.String flag)
【TAG】エラー時の選択行を取り除いて継続処理を行うかどうか[true/false]を指定します(初期値:false)。
|
void |
setExecType(java.lang.String type)
【TAG】このチェックを行う、実行タイプ を指定します。
|
void |
setExist(java.lang.String ext)
【TAG】データベースのチェック方法[auto/true/false/one/notuse]を指定します(初期値:auto[自動])。
|
void |
setFrom(java.lang.String frm)
【TAG】チェックするデータベース名(from 句)を指定します。
|
void |
setLbl(java.lang.String id)
【TAG】ラベルリソースのラベルIDを指定します。
|
void |
setLblParamKeys(java.lang.String keys)
【TAG】ラベルリソースの引数をCSV形式で指定します。
|
void |
setSelectedAll(java.lang.String all)
【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
|
void |
setSqlType(java.lang.String type)
【TAG】このチェックを行う、SQLタイプ を指定します。
|
void |
setTableId(java.lang.String id)
【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
(初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
|
void |
setUniqCheckClms(java.lang.String clm)
【TAG】指定されたキーに従って、メモリ上のテーブルに対してユニークキーチェックを行います。
|
void |
setWhere(java.lang.String whr)
【TAG】チェックする検索条件(where句)を指定します。
|
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, 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, 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_ENTRY
public DataCheckTag()
6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. |
public int doStartTag()
doStartTag
インタフェース内 Tag
doStartTag
クラス内 CommonTagSupport
4.1.1.0 (2008/02/22) 新規作成 |
4.1.2.0 (2008/03/12) sqlType,execType 判定 |
6.3.4.0 (2015/08/01) caseKey,caseVal,caseNN,caseNull,caseIf 属性対応 |
public int doAfterBody()
doAfterBody
インタフェース内 IterationTag
doAfterBody
クラス内 CommonTagSupport
4.3.4.0 (2008/12/01) 新規追加 |
6.3.1.1 (2015/07/10) BodyString,BodyRawStringは、CommonTagSupport で、trim() します。 |
public int doEndTag()
doEndTag
インタフェース内 Tag
doEndTag
クラス内 CommonTagSupport
4.1.1.0 (2008/02/22) 新規作成 |
4.1.2.0 (2008/03/12) sqlType,execType 判定 |
4.2.0.1 (2008/03/27) from を取得 |
4.2.1.0 (2008/04/11) ErrMessageManager対応 |
4.3.4.0 (2008/12/01) ユニークキーチェック対応。bodyContentの取得を#doAfterBody()で行う。 |
5.1.9.0 (2010/08/01) エラーメッセージの表示前後にincludeするJSPを指定できるようにする。 |
5.1.9.0 (2010/08/01) Transaction 対応します。 |
5.3.7.0 (2011/07/01) TransactionReal の引数変更 、Transaction対応で、close処理を入れる。 |
6.3.6.1 (2015/08/28) Transaction でAutoCloseableを使用したtry-with-resources構築に対応。 |
protected void release2()
release2
クラス内 CommonTagSupport
4.1.1.0 (2008/02/22) 新規作成 |
4.1.2.0 (2008/03/12) sqlType , execType , isExec 追加 |
4.2.0.1 (2008/03/27) conditionKey , conditionList , msgParamKeys 追加 |
5.1.9.0 (2010/08/01) beforeErrorJsp , afterErrorJsp, selectedAll 追加 |
5.7.6.2 (2014/05/16) where 追加。tableExist タグに伴う便利機能追加 |
6.3.4.0 (2015/08/01) isExec は、パラメータではなく、ローカル変数。 |
public void setTableId(java.lang.String id)
id
- テーブルID (sessionに登録する時のID)検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
public void setDbid(java.lang.String id)
id
- データベース接続IDQueryオブジェクトを作成する時のDB接続IDを指定します。
public void setCommand(java.lang.String cmd)
cmd
- コマンド (public static final 宣言されている文字列)コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される フィールド定数値のいづれかを、指定できます。
public void setExist(java.lang.String ext)
ext
- チェック方法 [auto:自動/true:存在する/false:存在しない/one:ひとつ以下/notuse:チェックしない]exist 属性に指定された 、「true:存在する」、「false:存在しない」、「one:ひとつ以下」、 の値は、いずれの場合も、成立時は、正常とみなします。 「auto:自動」は、DBTableModeleのmodifyType(A,C,D)に応じて、チェックします。 A,C,D は、entryタグにコマンドを渡してデータを作成したときに、内部で作成されます。 (command="NEW"の場合は、trueと同じ動きになります。) notuse は、チェックを行いません。これは、このタグを共有使用する場合に、外部で チェックを行うかどうかを指定できるようにするために使用します。 (「true:存在する」 には、データが存在した場合に、OKで、なければエラーです。) 初期値は、「auto:自動」です。
public void setErrRemove(java.lang.String flag)
flag
- エラーデータを除外 [true:継続処理/false:エラー時停止]exist 属性に指定された 、「true:存在する」、「false:存在しない」、「one:ひとつ以下」、 に対して、エラーが発生した選択行番号を、取り除いて以下の処理を継続するかどうかを 指定します。 true に設定した場合は、エラーデータを削除し、継続処理を行うことができます。 flase の場合は、エラーデータを表示して、継続処理を停止します。 初期値は、「false:エラー時停止」です。
public void setLbl(java.lang.String id)
setLbl
クラス内 CommonTagSupport
id
- メッセージIDsetLblParamKeys( String )
ラベルリソースIDを指定します。 各処理に応じた初期設定のラベルリソースIDは、以下の通りです。 exist="true" ERR0025=データ未登録エラー。キー={0}、値={1} のデータは、存在していません。 exist="false" ERR0026=データ登録済みエラー。キー={0}、値={1} のデータは、すでに存在しています。 exist="one" ERR0027=データ2重登録エラー。キー={0}、値={1} のデータは、重複して存在しています。 JavaScript ERR0030=入力したデータが不正です。key={0} value={1} 形式={2} 引数のパラメータには、通常、チェックに使用した実データが、DBTableModel から取得されます。 引数を変更する場合は、lblParamKeys を使用してください。
public void setLblParamKeys(java.lang.String keys)
keys
- メッセージリソースのキー(CSV)setLbl( String )
ラベルリソースのキーをCSV形式で指定することで、設定します。 ラベルに引数( {0},{1} など ) がある場合、ここで指定した値を 順番に、{0},{1},{2}・・・ に当てはめていきます。 キーワードは、CSV形式で指定し、それを分解後、ラベルリソースで リソース変換を行います。(つまり、記述された値そのものでは在りません) PL/SQL では、"{#PN}" などと指定していた分は、同様に "PN" と指定しです。 内部的に、where 条件に指定されたキーと値は、@KEY と @VAL に、 from と where の間の文字列は、@TBL に対応付けられます。 {@XXXX} 変数も使用できます。実データの値を取出したい場合は、[PN]と すれば、DBTableModel の PN の値を取出します。 なにも指定しない場合は、キー={0} 、値={1}、from={2} です。
4.2.0.1 (2008/03/27) 新規追加 |
public void setSqlType(java.lang.String type)
type
- このチェックを行うSQLタイプSQLタイプは、INSERT,COPY,UPDATE,MODIFY,DELETE などの記号を指定します。 一般には、result 画面から update 画面へ遷移するときの、command と 同じにしておけばよいでしょう。 これは、execType とマッチした場合のみ、このチェックが処理されます。 簡易 equals タグの代役に使用できます。 なにも指定しない場合は、チェックは実行されます。
4.1.2.0 (2008/03/12) 新規追加 |
public void setExecType(java.lang.String type)
type
- このチェックを行う実行タイプ実行タイプは、sqlType とマッチした場合のみ、このチェックが処理されます。 簡易 equals タグの代役に使用できます。 execType は、複数指定が可能です。単純な文字列マッチで、sqlType を 含めば、実行されます。 例えば、sqlType={@sqlType} execType="INSERT|COPY" とすれば、 sqlType に、INSERT または、COPY が登録された場合にチェックが掛かります。 なにも指定しない場合は、チェックは実行されます。
4.1.2.0 (2008/03/12) 新規追加 |
public void setConditionKey(java.lang.String key)
key
- カラムIDsetConditionList( String )
指定のカラムIDの値と、conditionList の値を比較して、 存在する場合は、check処理を実行します。 この処理が有効なのは、command="ENTRY" の場合のみです。
4.2.0.1 (2008/03/27) 新規追加 |
public void setConditionList(java.lang.String list)
list
- 条件判定する値("|"で区切)setConditionKey( String )
conditionKey とペアで指定します。ここには、カラムの設定値のリストを 指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が 存在する場合のみ、check処理を実行します。 この処理が有効なのは、command="ENTRY" の場合のみです。 設定しない場合は、無条件に実行します。
4.2.0.1 (2008/03/27) 新規追加 |
public void setUniqCheckClms(java.lang.String clm)
clm
- チェックキー(CSV形式)ユニークキーチェックを行うキーを指定します。ここで、指定されたキーに対して、 DBTableModelの値をチェックし、全てのキーに同じ値となっている行が存在すればエラーとなります。 このチェックは、command="ENTRY"の場合のみ有効です。 また、このチェックは他のチェック(DB存在チェックなど)と同時に処理することはできません。 キーが指定され手いる場合は、ボディ部分に記述されている定義は無視されます。 errRemoveの属性がtrueに指定されている場合、重複行は、DBTableModelの並び順から見て、 最初の行のみ処理され、2つめ以降の重複行は無視されます。 なお、キーはCSV形式(CSV形式)で複数指定が可能です。
4.3.4.0 (2008/12/01) 新規追加 |
public void setBeforeErrorJsp(java.lang.String jsp)
jsp
- 表示前にincludeするJSPファイル名エラーが発生した際に、エラーメッセージの表示前にincludeするJSPを指定します。 エラーが発生していない場合は、ここで指定されたJSPが処理されることはありません。 通常は、戻るリンクなどを指定します。 指定の方法は、相対パス、絶対パスの両方で指定することができます。 但し、絶対パスで指定した場合、その基点は、コンテキストのルートディレクトリになります。 例) beforeErrorJsp = "/jsp/common/history_back.jsp"
5.1.9.0 (2010/08/01) 新規追加 |
public void setAfterErrorJsp(java.lang.String jsp)
jsp
- 表示後にincludeするJSPファイル名エラーが発生した際に、エラーメッセージの表示前にincludeするJSPを指定します。 エラーが発生していない場合は、ここで指定されたJSPが処理されることはありません。 指定の方法は、相対パス、絶対パスの両方で指定することができます。 但し、絶対パスで指定した場合、その基点は、コンテキストのルートディレクトリになります。 例) afterErrorJsp = "/jsp/common/history_back.jsp"
5.1.9.0 (2010/08/01) 新規追加 |
public void setSelectedAll(java.lang.String all)
all
- 選択済み処理可否 [true:全件選択済み/false:通常]全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、(true/false)を指定します。 初期値は false です。
5.1.9.0 (2010/08/01) 新規追加 |
public void setFrom(java.lang.String frm)
frm
- チェックするテーブルIDこれは、tableExist タグ廃止に伴う便利機能で、通常、BODYに記述された SELECT count(*) from XXXX where XXXXX で、チェックしますが、 from 属性 と、where 属性を指定する事で、内部で、チェック用のSQL文を 作成します。 from が指定された場合は、BODY は無視されますので、ご注意ください。
5.7.6.2 (2014/05/16) 新規追加 |
public void setWhere(java.lang.String whr)
whr
- チェックするWHERE条件これは、tableExist タグ廃止に伴う便利機能で、通常、BODYに記述された SELECT count(*) from XXXX where XXXXX で、チェックしますが、 from 属性 と、where 属性を指定する事で、内部で、チェック用のSQL文を 作成します。 where は、from が指定された場合のみ、有効ですし、where を指定しなければ、 全件検索になります。 tableExist タグと異なるのは、where の指定の仕方で、tableExist タグでは、 names 属性と、対応する where には、? で記述していましたが、 dataCheck タグでは、通常の [] でDBTableModelの値を指定します。
5.7.6.2 (2014/05/16) 新規追加 |
protected int[] getParameterRows()
getParameterRows
クラス内 CommonTagSupport
5.1.9.0 (2010/08/01) 新規追加 |
public java.lang.String toString()
toString
クラス内 CommonTagSupport
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.