public class ColumnCheckTag extends CommonTagSupport
登録データの物理チェック(整合性チェック、nullチェック)を行うタグです。 コマンドに対応したチェック方式で、指定のカラムをチェックします。 command="NEW" の場合は、columns 引数にCSV形式で指定したカラム名より リクエスト情報を取得して、値をチェックします。 引数チェックでは、"%" や "_" などのあいまい検索時に指定する記号を 含むとエラーになるカラムはチェック対象からはずす必要がある為、 チェックすべきカラムを指定する必要があります。 command="ENTRY" の場合は、columns 引数に無関係に、全てのリクエストされたカラム の値をチェックします。これは、先の検索時の場合と異なり、ENTRYでは データベースに値を設定する為、無条件にチェックする必要があります。 nullCheck は、command に無関係に指定のカラムが null (ゼロ文字列)かどうかを 判定します。 maxRowCount は、一覧検索時のチェックされた件数が、指定の値を超えた場合に エラーになります。minRowCount は、同様に、最小選択件数(設定値を含む)の指定です。 このタグは、エラー時には、それ以降のJSP画面を評価しません。BODY 部に記述された 値は、エラー時のみ表示され、正常時には、なにも表示されません。これは、エラー時の メッセージや、ユーザーにエラー時のアクションを行ってもらう場合の処理(例えば、 画面を戻る為のボタンなど)を表示させます。 useColumnLabel を true にセットすると、エラー時のカラム名(ラベル)を、カラムオブジェクトから 取得するようになります。動的カラム実行時や、DBTableModelに対して、ColumnEditor等で ラベルを書き換えた場合に、有効です。false の場合は、基本的にはラベルリソースからの 取得になりますが、ケースによっては、カラムオブジェクトから取得している場合もあります。 この属性は、互換性を重視し、初期値が、false になっています。 command="MODIFY" , "DELETE" 時には、強制的に、minRowCount="1" で処理します。
●形式:<og:columnCheck command = "…" /> ●形式:<og:columnCheck command = "…" >エラー時のみ処理 </og:columnCheck> ●body:なし/あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) ●Tag定義: <og:columnCheck command 【TAG】コマンド[NEW/RENEW/ENTRY]をセットします(初期値:NEW) columns 【TAG】チェックすべきカラム列をCSV形式(CSV形式)で指定します nullCheck 【TAG】NULL チェックすべきカラム列をカンマ区切(CSV形式)りで指定します mustAnyCheck 【TAG】選択必須カラム(指定のカラムの内最低ひとつがNULLでない)を"AA|BB|CC,XX|YY|ZZ" 形式で指定します checkType 【TAG】チェック対象のデータ[AUTO/NEW/ENTRY]を指定します(初期値:AUTO) maxRowCount 【TAG】ENTRY時にチェックで選択された行数の最大値を設定します minRowCount 【TAG】ENTRY時にチェックで選択された行数の最小値を設定します tableId 【TAG】(通常は使いません) sessionに登録されている DBTableModel を取り出すキーを指定します matchKeys 【TAG】正規表現でのマッチングを行うカラム列をCSV形式(CSV形式)で指定します matchVals 【TAG】正規表現でのマッチングを行うカラム列に対する値(正規表現)をCSV形式(CSV形式)で指定します realTime 【TAG】(通常使いません)リアルタイムチェックを行う場合に有効にします(初期値:false) useStrict 【TAG】NEWの場合に、厳密にチェックするかどうか[true/false]を指定します(初期値:false) useColumnLabel 【TAG】カラムラベルを使用するかどうか[true/false]を指定します(初期値:false) checkNames 【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します 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:columnCheck> ●使用例 <og:columnCheck command = "{@command}" columns = "AAA,BBB,CCC" DB定義(DBColumnリソース)で定義した項目(桁数,タイプ等)でチェックします。 maxRowCount = "1" チェックで選ばれた 最大選択件数(設定値を含む)を指定。 minRowCount = "1" チェックで選ばれた 最小選択件数(設定値を含む)を指定。 nullCheck = "AAA,CCC" NULLチェックを実行します。 /> [エラー時に、BODY部に記述された内容を出力する。正常時には、このBODY部の記述は出力されません。] <og:columnCheck command = "{@command}" columns = "AAA,BBB,CCC" DB定義(DBColumnリソース)で定義した項目(桁数,タイプ等)でチェックします。 nullCheck = "AAA,CCC" NULLチェックを実行します。 > <form method="POST" action="forward.jsp" target="RESULT"> <og:input type="button" onClick="history.back()" msg="MSG0049" accesskey="R" td="false" /> </form> </og:columnCheck> mustAnyCheck 属性に、選択必須カラムを指定します。 例:mustAnyCheck="AA|BB|CC" AA,BB,CC のカラムで選択必須(すべてがnullならエラー) 例:mustAnyCheck="AA|BB|CC,XX|YY|ZZ" AA,BB,CC のセットと、XX,YY,ZZのセットでそれぞれ選択必須。 例:mustAnyCheck="AA|XX,AA|YY,AA|ZZ" AA に値があればすべて成立。そうでない場合は、XX と YY と ZZ がすべて必須。 例:mustAnyCheck="AA|BB,BB|CC,AA|CC" AA,BB,CC の内、どれか2つが必須。AAが成立すればBBかCCが必須。同様に、 BBが成立すれば、AAかCCが必須。 例:query.jsp <og:column name="AA" mustAny="true" /> <og:column name="BB" mustAny="true" /> <og:column name="XX" mustAny="XYZ" /> <og:column name="YY" mustAny="XYZ" /> result.jsp <og:columnCheck mustAnyCheck="AA|BB,XX|YY" /> custom/custom.css .XYZ { background-color: Green; } 例:動的カラムで、entry.jsp でのチェックを行う場合。 entry.jsp <og:columnCheck command="NEW" columns="*" useColumnLabel="true" /> useColumnLabel で、動的に作成されたカラム(SAVE=TRUEでキャッシュ済み)を使って チェックします。command="NEW" なので、対象カラムを指定するのに、"*" ですべてを選択します。
修飾子とタイプ | フィールドと説明 |
---|---|
static String |
CMD_ENTRY
command 引数に渡す事の出来る コマンド エントリー "ENTRY"
|
static String |
CMD_NEW
command 引数に渡す事の出来る コマンド 新規 "NEW"
|
static String |
CMD_RENEW
command 引数に渡す事の出来る コマンド 再検索 "RENEW"
|
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
コンストラクタと説明 |
---|
ColumnCheckTag()
デフォルトコンストラクター
|
修飾子とタイプ | メソッドと説明 |
---|---|
int |
doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
|
int |
doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setCheckNames(String nm)
【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します。
|
void |
setCheckType(String flag)
【TAG】 チェック対象のタイプ[AUTO/NEW/ENTRY]を指定します(初期値:AUTO)。
|
void |
setColumns(String clms)
【TAG】チェックすべきカラム列をCSV形式(CSV形式)で指定します。
|
void |
setCommand(String cmd)
【TAG】コマンド[NEW/RENEW/ENTRY]をセットします(初期値:NEW)。
|
void |
setMatchKeys(String keys)
【TAG】正規表現でのマッチングを行うカラム列をCSV形式(CSV形式)で指定します。
|
void |
setMatchVals(String vals)
【TAG】正規表現でのマッチングを行うカラム列に対する値(正規表現)をCSV形式(CSV形式)で指定します。
|
void |
setMaxRowCount(String count)
【TAG】チェックで選択された行数の最大値を設定します(初期値:-1 無制限)。
|
void |
setMinRowCount(String count)
【TAG】チェックで選択された行数の最小値を設定します(初期値:-1 無制限)。
|
void |
setMustAnyCheck(String clms)
【TAG】選択必須カラム(指定のカラムの内最低ひとつがNULLでない)を"AA|BB|CC,XX|YY|ZZ" 形式で指定します。
|
void |
setNullCheck(String clms)
【TAG】NULL チェックすべきカラム列をCSV形式(CSV形式)で指定します。
|
void |
setRealTime(String flag)
【TAG】(通常使いません)リアルタイムチェックを行う場合に有効にします(初期値:false)。
|
void |
setTableId(String id)
【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します
(初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
|
void |
setUseColumnLabel(String flag)
【TAG】カラムラベルを使用するかどうか[true/false]を指定します(初期値:false)。
|
void |
setUseStrict(String flag)
【TAG】NEWの場合に、厳密にチェックするかどうか[true/false]を指定します(初期値:false)。
|
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, 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 ColumnCheckTag()
6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. |
public int doStartTag()
doStartTag
インタフェース内 Tag
doStartTag
クラス内 CommonTagSupport
3.5.4.2 (2003/12/15) エラー時に、BODY部に記述された内容を出力する。 |
5.0.0.2 (2009/09/15) xss対応⇒チェックする |
5.7.8.0 (2014/07/04) caseKey,caseVal,caseNN,caseNull 属性を追加 |
public int doAfterBody()
doAfterBody
インタフェース内 IterationTag
doAfterBody
クラス内 CommonTagSupport
3.5.4.2 (2003/12/15) エラー時に、BODY部に記述された内容を出力する。 |
public int doEndTag()
doEndTag
インタフェース内 Tag
doEndTag
クラス内 CommonTagSupport
3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 |
3.4.0.3 (2003/09/10) command="NEW" でエラー発生時には、DBTableModel をクリアする。 |
3.5.4.2 (2003/12/15) HTMLTableViewForm クラス名変更(⇒ ViewForm_HTMLTable) |
3.5.4.2 (2003/12/15) エラー時に、BODY部に記述された内容を出力する。 |
3.5.4.3 (2004/01/05) tableId 属性を追加。 |
3.5.4.4 (2004/01/16) エラー結果を表示するテーブル形式のフォーム修正 |
3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソッドを利用 |
4.1.2.1 (2008/03/13) table 属性を追加。 |
4.3.3.0 (2008/10/01) viewSimple属性追加 |
4.3.7.0 (2009/06/01) viewSimple属性名称変更 ⇒ isRealTime |
5.6.8.3 (2013/09/27) checkTypeがAutoの場合のセットをここで行い、tableModelチェックをcheckTypeで行う。 |
5.7.8.0 (2014/07/04) caseKey,caseVal,caseNN,caseNull 属性を追加 |
6.4.3.2 (2016/02/19) ENTRY時にチェックする対象を、tableId指定のテーブルのカラムに限定します。 |
protected void release2()
release2
クラス内 CommonTagSupport
2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 |
3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 |
3.5.4.2 (2003/12/15) エラー時に、BODY部に記述された内容を出力する。 |
3.5.4.3 (2004/01/05) tableId 属性を追加。 |
3.8.0.9 (2005/10/17) mustAnyCheck 属性を追加。 |
4.1.2.1 (2008/03/13) table 属性を追加。 |
4.3.3.0 (2008/10/01) viewSimple属性追加 |
4.3.7.0 (2009/06/01) viewSimple属性名称変更 ⇒ isRealTime |
5.2.2.0 (2010/11/01) NEWの場合に、厳密にチェックするフラグを追加 |
5.4.3.4 (2012/01/12) isColumnLabelを追加 |
6.4.3.2 (2016/02/19) ENTRY時にチェックする対象を、tableId指定のテーブルのカラムに限定します。 |
public void setColumns(String clms)
clms
- カラム列(CSV形式)columns="AAA,BBB,CCC,DDD" 分解方法は、通常のパラメータ取得後に、CSV分解します。 "*" を指定すると、command="NEW" のときの判定にすべてのリクエスト文字列を チェック対象とします。通常は、必要分だけ指定しますが、動的カラムなどの 場合は、カラム名を予め指定できないため、"*" で指定できるようにします。 その場合、"h_" , "hX_" , maxRowCount , command , pageSize , pagePlus , debug , GAMENID , BACK_JSPID , BACK_GAMENID の予約語は、対象から除きます。 ※ 6.4.0.2 (2015/12/11) columns="*" のときのカラムは、リクエスト変数から、上記の予約語も除きますが、 ResourceManager に存在しない(リソース未登録)カラムも除きます。
3.5.6.2 (2004/07/05) 先に配列に分解してからリクエスト変数の値を取得 |
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。 |
5.4.3.4 (2012/01/12) command="NEW" のときの動的カラム対応( "*" ですべてのリクエスト) |
6.4.0.2 (2015/12/11) columns="*" のときのカラムは、リソースに存在する分のみとする。 |
public void setNullCheck(String clms)
clms
- カラム列(CSV形式)(must 属性のセットにより、自動処理されます) nullCheck="AAA,BBB,CCC,DDD" 分解方法は、通常のパラメータ取得後に、CSV分解します。
3.5.6.2 (2004/07/05) 先に配列に分解してからリクエスト変数の値を取得 |
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。 |
public void setMustAnyCheck(String clms)
clms
- 選択必須カラム(mustAny 属性のセットにより、自動処理されます) 複数のカラム属性の値のうち、どれかが null でない場合は正常とし、 すべてが null の場合を警告します。 例:mustAnyCheck="AA|BB|CC" AA,BB,CC のカラムで選択必須(すべてがnullならエラー) 例:mustAnyCheck="AA|BB|CC,XX|YY|ZZ" AA,BB,CC のセットと、XX,YY,ZZのセットでそれぞれ選択必須。 例:mustAnyCheck="AA|XX,AA|YY,AA|ZZ" AA に値があればすべて成立。そうでない場合は、XX と YY と ZZ がすべて必須。 例:mustAnyCheck="AA|BB,BB|CC,AA|CC" AA,BB,CC の内、どれか2つが必須。AAが成立すればBBかCCが必須。同様に、 BBが成立すれば、AAかCCが必須。 選択必須は、must と同様に、色づけを行う(query.jsp)画面では、mustAny 属性を セットします。チェックを行う(result.jsp)画面では、columnCheck タグの mustAnyCheck 属性に、選択必須カラムを指定します。(上記参照) column タグ等の mustAny 属性に、mustAny="true" とセットすると、生成される HTMLは、class="mustAny" が出力されます。エンジン標準では、default.css に .mustAny が定義されています。( background-color: #CCFFFF; ) なお、mustAny 属性に、true 以外の値をセットした場合(mustAny="XYZ")は、 生成されるHTMLに、class="XYZ" が出力されます。これは、複数のグループ間で 色を変えて、選択必須を指定する場合に使用します。色は、custom/custom.css で指定します。 分解方法は、通常のパラメータ取得後に、CSV分解します。
3.8.0.9 (2005/10/17) 新規追加 |
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。 |
public void setCommand(String cmd)
cmd
- コマンド (public static final 宣言されている文字列)コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される フィールド定数値のいづれかを、指定できます。 何も設定されない、または、null の場合は、"NEW" が初期値にセットされます。
public void setCheckType(String flag)
flag
- チェックタイプ [AUTO/NEW/ENTRY]通常のリクエストデータタイプは、キーそのものですが,エントリデータは表形式の データを一括で登録する為、(キー+"__" + 行番号)形式を、バラす必要があります。 ENTRY は、DBTableModelのリクエスト情報をチェックします。 これは、全データが対象になります。(columns/nullCheck 属性は無効) AUTO は、command が、上記 NEW か ENTRY かを判断して処理を振り分けます。 初期値は、AUTO です。
public void setMaxRowCount(String count)
count
- 最大件数制限をかけたい行数(この件数と同じ場合は正常)を指定します。 最大選択件数を超えた場合は,エラーメッセージを返します。 例えば、1件のみを正常とする場合は、maxRowCount="1" とします。
public void setMinRowCount(String count)
count
- 制限をかけたい行数 (この件数と同じ場合は正常)最小選択件数を超えない場合は、エラーメッセージを返します。 例えば、1件のみを正常とする場合は、minRowCount="1" とします。
public void setTableId(String id)
id
- テーブルID (sessionに登録する時のID)検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])。
6.4.3.2 (2016/02/19) ENTRY時にチェックする対象を、tableId指定のテーブルのカラムに限定します。 |
public void setMatchKeys(String keys)
keys
- カラム列(CSV形式)setMatchVals( String )
matchKeys="AAA,BBB,CCC,DDD" matchKeys属性とmatchVals属性の個数は、同じでなければなりません。 先に配列に分解してからリクエスト変数の値を取得するようにします。 こうする事で、リクエストにCSV形式の値を設定できるようになります。
4.0.0.0 (2005/11/30) 新規作成 |
public void setMatchVals(String vals)
vals
- カラム列に対する値(正規表現)(CSV形式)setMatchKeys( String )
matchVals="AAA,BBB,CCC,DDD" matchKeys属性とmatchVals属性の個数は、同じでなければなりません。 先に配列に分解してからリクエスト変数の値を取得するようにします。 こうする事で、リクエストにCSV形式の値を設定できるようになります。
4.0.0.0 (2005/11/30) 新規作成 |
public void setRealTime(String flag)
flag
- リアルタイムチェック [true:する/false:しない]リアルタイムチェックを行う場合に有効にする属性です。 trueが指定された場合、通常のチェックと比較し、以下の差異があります。 ①エラー結果を簡易フォーマットで出力します。 (ViewFormType="HTMLSimpleErrorList"で表示されます。) この簡易フォーマットで出力した場合は、ラベル(短)の定義で出力され、 カラム名やデータ等は出力されません。 ②must,mustAny属性のチェックを行いません。 必須及び選択必須は、視覚的に判別できるため、リアルタイムチェックの 対象外とします。
4.3.3.0 (2008/10/01) 新規作成 |
4.3.7.0 (2009/06/01) viewSimple属性名称変更 ⇒ isRealTime |
public void setUseStrict(String flag)
flag
- 厳密チェックか [true:厳密/false:甘い]データをチェックするに当たり、あいまい検索などで厳密にチェックすると エラーになるケースがあるため、command="NEW" のチェック時には、甘い目の チェックを行っています。DBColumn#valueCheck( String , false ) command="ENTRY" のチェックは、厳密なチェックです。 このフラグは、検索時でも、厳密なチェックを行いたい場合に、true をセットします。
5.2.2.0 (2010/11/01) 新規作成 |
public void setUseColumnLabel(String flag)
flag
- カラムラベル使用 [true:する/false:しない]カラムラベルはラベルローダーを利用せずにアプリケーション側で 追加したラベルをResourceManagerにキャッシュしている所から取り出す かどうかを指定します。 カラムラベルに存在しない場合は、通常のラベルから検索します。
5.4.3.4 (2012/01/12) 新規作成 |
public void setCheckNames(String nm)
nm
- 正規化を行うカラム(CSV形式)カラムチェックで正規化が行われていないプラグインに対して強制的に正規化を行います。 この属性を利用したチェックを行った場合は、queryタグでPL/SQLを動作させる場合にも 同名属性でカラムの指定を行う必要があります。 (queryタグでcheckNamesを利用しない場合はこの属性はnullにしてください) この属性はチェックタイプがNEWの場合のみ有効です。 リアルタイムチェックでこの機能を利用したい場合は、columnTag等のoptionAttributes 属性にrtOption='checkNames=VIEW_DATE'のように記述してください。
5.4.3.8 (2012/01/24) 新規追加 |
5.4.4.0 (2012/02/01) コメント修正 |
5.6.9.4 (2013/10/31) 空白削除を行う |
public String toString()
toString
クラス内 CommonTagSupport
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.