org.opengion.hayabusa.taglib
クラス DataCheckTag
java.lang.Object
javax.servlet.jsp.tagext.TagSupport
javax.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.DataCheckTag
- すべての実装されたインタフェース:
- Serializable, BodyTag, IterationTag, JspTag, Tag, TryCatchFinally
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}にはそれぞれ[カラム名]指定されたカラム名及びデータがカンマ区切りで
自動的に設定されます。
- 関連項目:
- 直列化された形式
- 機能階層
- DB登録
- 形式サンプル:
●形式:
・<og:dataCheck
command = "{@command}"
exist = "[auto|true|false|one|notuse]"
errRemove = "[true|false]"
msg = "{@msg}"
msgParamKeys = "ZY03" : メッセージリソースのキーをカンマ区切りで指定。{2} 以降にセット
sqlType = "{@sqlType}"
execType = "INSERT|COPY|UPDATE|MODIFY|DELETE" : sqlType を含む場合、実行
conditionKey = "FGJ" : 条件判定するカラムIDを指定(初期値は columnId )
conditionList = "0|1|8|9" : 条件判定する値のリストを、"|"で区切って登録(初期値は、無条件)
uniqCheckKeys = "CLM,LANG" : DBTableModel内でのユニークキーチェックを行うためのカラム
>
●body:SQL文 又は JavaScript式
●使用例
・<og:dataCheck
command = "ENTRY"
exist = "true"
msg = "MSG0001"
>
select count(*) from GEA03 where clm = [CLM]
</og:dataCheck>
・exist 属性の値に応じて、チェック方法が異なります。
[ auto , true , false , one , notuse が指定できます。]
・<og:dataCheck
command = "ENTRY"
msg = "MSG0001"
>
<![CDATA[
[DYSTART] < [DY] && [DY] < [DYEND]
]]>
</og:dataCheck>
・<og:dataCheck
command = "ENTRY"
msg = "MSG0001"
>
<![CDATA[
[GOKEI] < [TANKA] * [RITU]
]]>
</og:dataCheck>
- 変更履歴:
4.1.1.1 (2008/02/22) 新規作成 |
- バージョン
- 4.0
- 作成者
- Hiroki Nakamura
- 導入されたバージョン:
- JDK5.0,
クラス org.opengion.hayabusa.taglib.CommonTagSupport から継承されたメソッド |
add, add, addEventColumnSQL, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsglbl, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getResource, getScope, getSessionAttribute, getTagName, getUser, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setMsglbl, setNoTransitionRequest, setObject, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, setUseValue, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useXssCheck |
CMD_NEW
public static final String CMD_NEW
- command 引数に渡す事の出来る コマンド "NEW"
- 関連項目:
- 定数フィールド値
CMD_ENTRY
public static final String CMD_ENTRY
- command 引数に渡す事の出来る コマンド "ENTRY"
- 関連項目:
- 定数フィールド値
DataCheckTag
public DataCheckTag()
doStartTag
public int doStartTag()
- Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
- 定義:
- インタフェース
Tag
内の doStartTag
- オーバーライド:
- クラス
CommonTagSupport
内の doStartTag
- 戻り値:
- int
- 変更履歴:
4.1.1.0 (2008/02/22) 新規作成 |
4.1.2.0 (2008/03/12) sqlType,execType 判定 |
doAfterBody
public int doAfterBody()
- Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
- 定義:
- インタフェース
IterationTag
内の doAfterBody
- オーバーライド:
- クラス
CommonTagSupport
内の doAfterBody
- 戻り値:
- int
- 変更履歴:
4.3.4.0 (2008/12/01) 新規追加 |
doEndTag
public int doEndTag()
- Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
- 定義:
- インタフェース
Tag
内の doEndTag
- オーバーライド:
- クラス
CommonTagSupport
内の doEndTag
- 戻り値:
- int
- 変更履歴:
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()で行う。 |
release2
protected void release2()
- タグリブオブジェクトをリリースします。
キャッシュされて再利用されるので、フィールドの初期設定を行います。
- オーバーライド:
- クラス
CommonTagSupport
内の release2
- 変更履歴:
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 追加 |
setTableId
public void setTableId(String id)
- 【TAG】(通常は使いません)結果をDBTableModelに書き込んで、sessionに登録するときのキーを指定します。
- パラメータ:
id
- sessionに登録する時の ID- TagLib:
初期値は、HybsSystem.TBL_MDL_KEY です。 |
setDbid
public void setDbid(String id)
- 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します。
- パラメータ:
id
- データベース接続ID- TagLib:
Queryオブジェクトを作成する時のDB接続IDを指定します。 |
setCommand
public void setCommand(String cmd)
- 【TAG】コマンド(NEW or ENTRY)をセットします。
- パラメータ:
cmd
- コマンド(public static final 宣言されている文字列)- 関連項目:
- コマンド定数
- TagLib:
コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される
フィールド定数値のいづれかを、指定できます。 |
setExist
public void setExist(String ext)
- 【TAG】データベースのチェック方法(auto/true/false/one/notuse)を指定します(初期値:「auto:自動」)。
- パラメータ:
ext
- チェック方法(「auto:自動」、「true:存在する」、「false:存在しない」、「one:ひとつ以下」、「notuse:チェックしない」)- TagLib:
exist 属性に指定された 、「true:存在する」、「false:存在しない」、「one:ひとつ以下」、
の値は、いずれの場合も、成立時は、正常とみなします。
「auto:自動」は、DBTableModeleのmodifyType(A,C,D)に応じて、チェックします。
A,C,D は、entryタグにコマンドを渡してデータを作成したときに、内部で作成されます。
(command="NEW"の場合は、trueと同じ動きになります。)
notuse は、チェックを行いません。これは、このタグを共有使用する場合に、外部で
チェックを行うかどうかを指定できるようにするために使用します。
(「true:存在する」 には、データが存在した場合に、OKで、なければエラーです。)
初期値は、「auto:自動」です。 |
setErrRemove
public void setErrRemove(String flag)
- 【TAG】エラー時の選択行を取り除いて継続処理を行うかどうかを指定します(初期値:false)。
- パラメータ:
flag
- エラー時の継続処理(true:エラー行番号を取り除き継続処理/false:エラー時停止)- TagLib:
exist 属性に指定された 、「true:存在する」、「false:存在しない」、「one:ひとつ以下」、
に対して、エラーが発生した選択行番号を、取り除いて以下の処理を継続するかどうかを
指定します。
true に設定した場合は、エラーデータを削除し、継続処理を行うことができます。
flase の場合は、エラーデータを表示して、継続処理を停止します。
初期値は、「false:エラー時停止」です。 |
setMsg
public void setMsg(String id)
- 【TAG】メッセージIDを指定します。
- パラメータ:
id
- メッセージID- 関連項目:
setMsgParamKeys( String )
- TagLib:
メッセージ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 から取得されます。
引数を変更する場合は、msgParamKeys を使用してください。 |
setMsgParamKeys
public void setMsgParamKeys(String keys)
- 【TAG】メッセージリソースの引数をカンマ区切りで指定します。
- パラメータ:
keys
- メッセージリソースのキー(CSV)- 関連項目:
setMsg( String )
- TagLib:
メッセージリソースのキーをカンマ区切りで指定することで、設定します。
メッセージに引数( {0},{1} など ) がある場合、ここで指定した値を
順番に、{0},{1},{2}・・・ に当てはめていきます。
キーワードは、カンマ区切りで指定し、それを分解後、ラベルリソースで
リソース変換を行います。(つまり、記述された値そのものでは在りません)
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) 新規追加 |
setSqlType
public void setSqlType(String type)
- 【TAG】このチェックを行う、SQLタイプ を指定します。
- パラメータ:
type
- このチェックを行う、SQLタイプ- TagLib:
SQLタイプは、INSERT,COPY,UPDATE,MODIFY,DELETE などの記号を指定します。
一般には、result 画面から update 画面へ遷移するときの、command と
同じにしておけばよいでしょう。
これは、execType とマッチした場合のみ、このチェックが処理されます。
簡易 equals タグの代役に使用できます。
なにも指定しない場合は、チェックは実行されます。 |
- 変更履歴:
4.1.2.0 (2008/03/12) 新規追加 |
setExecType
public void setExecType(String type)
- 【TAG】このチェックを行う、実行タイプ を指定します。
- パラメータ:
type
- このチェックを行う、実行タイプ- TagLib:
実行タイプは、sqlType とマッチした場合のみ、このチェックが処理されます。
簡易 equals タグの代役に使用できます。
execType は、複数指定が可能です。単純な文字列マッチで、sqlType を
含めば、実行されます。
例えば、sqlType={@sqlType} execType="INSERT|COPY" とすれば、
sqlType に、INSERT または、COPY が登録された場合にチェックが掛かります。
なにも指定しない場合は、チェックは実行されます。 |
- 変更履歴:
4.1.2.0 (2008/03/12) 新規追加 |
setConditionKey
public void setConditionKey(String key)
- 【TAG】条件判定するカラムIDを指定します。
- パラメータ:
key
- String- 関連項目:
setConditionList( String )
- TagLib:
指定のカラムIDの値と、conditionList の値を比較して、
存在する場合は、check処理を実行します。
この処理が有効なのは、command="ENTRY" の場合のみです。 |
- 変更履歴:
4.2.0.1 (2008/03/27) 新規追加 |
setConditionList
public void setConditionList(String list)
- 【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値は、無条件)
- パラメータ:
list
- String- 関連項目:
setConditionKey( String )
- TagLib:
conditionKey とペアで指定します。ここには、カラムの設定値のリストを
指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が
存在する場合のみ、check処理を実行します。
この処理が有効なのは、command="ENTRY" の場合のみです。
設定しない場合は、無条件に実行します。 |
- 変更履歴:
4.2.0.1 (2008/03/27) 新規追加 |
setUniqCheckClms
public void setUniqCheckClms(String clm)
- 【TAG】指定されたキーに従って、メモリ上のテーブルに対してユニークキーチェックを行います。
- パラメータ:
clm
- String- TagLib:
ユニークキーチェックを行うキーを指定します。ここで、指定されたキーに対して、
DBTableModelの値をチェックし、全てのキーに同じ値となっている行が存在すればエラーとなります。
このチェックは、command="ENTRY"の場合のみ有効です。
また、このチェックは他のチェック(DB存在チェックなど)と同時に処理することはできません。
キーが指定され手いる場合は、ボディ部分に記述されている定義は無視されます。
errRemoveの属性がtrueに指定されている場合、重複行は、DBTableModelの並び順から見て、
最初の行のみ処理され、2つめ以降の重複行は無視されます。
なお、キーはカンマ区切りで複数指定が可能です。 |
- 変更履歴:
4.3.4.0 (2008/12/01) 新規追加 |
toString
public String toString()
- このオブジェクトの文字列表現を返します。
基本的にデバッグ目的に使用します。
- オーバーライド:
- クラス
CommonTagSupport
内の toString
- 戻り値:
- このクラスの文字列表現
Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.