クラス ColumnCheckTag

すべての実装されたインタフェース:
BodyTag, IterationTag, JspTag, Tag, TryCatchFinally, Serializable

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 になっています。 ERR0012 : 指定のデータがセットされていません。(NULLエラー)。key={0} ERR0017 : 選択エラー。選択行数({0} 件)が、最大制限値({1} 件)以上選ばれました。 ERR0018 : 選択エラー。選択行数({0} 件)が、最小制限値({1} 件)以下選ばれました。 ERR0036 : 選択必須エラー。以下のデータの内どれかは入力してください。key={0} ERR0037 : データ整合性エラー。指定のキーは整合性チェックの結果マッチしませんでした。key={0} val={1} regex={2} 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形式(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形式で複数指定します useSLabel 【TAG】7.0.7.0 (2019/12/13) エラーメッセージにSLABELを利用するかどうか[true/false]を指定します(初期値:false) 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" なので、対象カラムを指定するのに、"*" ですべてを選択します。
導入されたバージョン:
JDK5.0,
  • フィールド詳細 リンク・アイコン

  • コンストラクタの詳細 リンク・アイコン

    • ColumnCheckTag リンク・アイコン

      public ColumnCheckTag()
      デフォルトコンストラクター
      変更履歴:
      6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
  • メソッドの詳細 リンク・アイコン

    • doStartTag リンク・アイコン

      public int doStartTag()
      Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
      定義:
      doStartTag インタフェース内 Tag
      オーバーライド:
      doStartTag クラス内 CommonTagSupport
      戻り値:
      後続処理の指示( EVAL_BODY_BUFFERED )
      変更履歴:
      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 属性を追加
    • doAfterBody リンク・アイコン

      public int doAfterBody()
      Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
      定義:
      doAfterBody インタフェース内 IterationTag
      オーバーライド:
      doAfterBody クラス内 CommonTagSupport
      戻り値:
      後続処理の指示(SKIP_BODY)
      変更履歴:
      3.5.4.2 (2003/12/15) エラー時に、BODY部に記述された内容を出力する。
    • doEndTag リンク・アイコン

      public int doEndTag()
      Taglibの終了タグが見つかったときに処理する 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指定のテーブルのカラムに限定します。, 7.0.7.0 (2019/12/13) useSLabel 属性を追加。
    • release2 リンク・アイコン

      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指定のテーブルのカラムに限定します。, 7.0.7.0 (2019/12/13) useSLabel 属性を追加。
    • setColumns リンク・アイコン

      public void setColumns(String clms)
      【TAG】チェックすべきカラム列をCSV形式(CSV形式)で指定します。
      パラメータ:
      clms - カラム列(CSV形式)
      変更履歴:
      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="*" のときのカラムは、リソースに存在する分のみとする。
      説明:
      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 に存在しない(リソース未登録)カラムも除きます。
    • setNullCheck リンク・アイコン

      public void setNullCheck(String clms)
      【TAG】NULL チェックすべきカラム列をCSV形式(CSV形式)で指定します。
      パラメータ:
      clms - カラム列(CSV形式)
      変更履歴:
      3.5.6.2 (2004/07/05) 先に配列に分解してからリクエスト変数の値を取得, 3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。
      説明:
      (must 属性のセットにより、自動処理されます) nullCheck="AAA,BBB,CCC,DDD" 分解方法は、通常のパラメータ取得後に、CSV分解します。
    • setMustAnyCheck リンク・アイコン

      public void setMustAnyCheck(String clms)
      【TAG】選択必須カラム(指定のカラムの内最低ひとつがNULLでない)を"AA|BB|CC,XX|YY|ZZ" 形式で指定します。
      パラメータ:
      clms - 選択必須カラム
      変更履歴:
      3.8.0.9 (2005/10/17) 新規追加, 3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。
      説明:
      (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分解します。
    • setCommand リンク・アイコン

      public void setCommand(String cmd)
      【TAG】コマンド[NEW/RENEW/ENTRY]をセットします(初期値:NEW)。
      パラメータ:
      cmd - コマンド (public static final 宣言されている文字列)
      関連項目:
      説明:
      コマンドは、HTMLから(get/post)指定されますので、CMD_xxx で設定される フィールド定数値のいづれかを、指定できます。 何も設定されない、または、null の場合は、"NEW" が初期値にセットされます。
    • setCheckType リンク・アイコン

      public void setCheckType(String flag)
      【TAG】チェック対象のタイプ[AUTO/NEW/ENTRY]を指定します(初期値:AUTO)。
      パラメータ:
      flag - チェックタイプ [AUTO/NEW/ENTRY]
      説明:
      通常のリクエストデータタイプは、キーそのものですが、エントリデータは表形式の データを一括で登録する為、(キー+"__" + 行番号)形式を、バラす必要があります。 ENTRY は、DBTableModelのリクエスト情報をチェックします。 これは、全データが対象になります。(columns/nullCheck 属性は無効) AUTO は、command が、上記 NEW か ENTRY かを判断して処理を振り分けます。 初期値は、AUTO です。
    • setMaxRowCount リンク・アイコン

      public void setMaxRowCount(String count)
      【TAG】チェックで選択された行数の最大値を設定します(初期値:-1 無制限)。
      パラメータ:
      count - 最大件数
      説明:
      制限をかけたい行数(この件数と同じ場合は正常)を指定します。 最大選択件数を超えた場合は、エラーメッセージを返します。 例えば、1件のみを正常とする場合は、maxRowCount="1" とします。
    • setMinRowCount リンク・アイコン

      public void setMinRowCount(String count)
      【TAG】チェックで選択された行数の最小値を設定します(初期値:-1 無制限)。
      パラメータ:
      count - 制限をかけたい行数 (この件数と同じ場合は正常)
      説明:
      最小選択件数を超えない場合は、エラーメッセージを返します。 例えば、1件のみを正常とする場合は、minRowCount="1" とします。
    • setTableId リンク・アイコン

      public void setTableId(String id)
      【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
      パラメータ:
      id - テーブルID (sessionに登録する時のID)
      変更履歴:
      6.4.3.2 (2016/02/19) ENTRY時にチェックする対象を、tableId指定のテーブルのカラムに限定します。
      説明:
      検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=])。
    • setMatchKeys リンク・アイコン

      public void setMatchKeys(String keys)
      【TAG】正規表現でのマッチングを行うカラム列をCSV形式(CSV形式)で指定します。
      パラメータ:
      keys - カラム列(CSV形式)
      関連項目:
      変更履歴:
      4.0.0.0 (2005/11/30) 新規作成
      説明:
      matchKeys="AAA,BBB,CCC,DDD" matchKeys属性とmatchVals属性の個数は、同じでなければなりません。 先に配列に分解してからリクエスト変数の値を取得するようにします。 こうする事で、リクエストにCSV形式の値を設定できるようになります。
    • setMatchVals リンク・アイコン

      public void setMatchVals(String vals)
      【TAG】正規表現でのマッチングを行うカラム列に対する値(正規表現)をCSV形式(CSV形式)で指定します。
      パラメータ:
      vals - カラム列に対する値(正規表現)(CSV形式)
      関連項目:
      変更履歴:
      4.0.0.0 (2005/11/30) 新規作成
      説明:
      matchVals="AAA,BBB,CCC,DDD" matchKeys属性とmatchVals属性の個数は、同じでなければなりません。 先に配列に分解してからリクエスト変数の値を取得するようにします。 こうする事で、リクエストにCSV形式の値を設定できるようになります。
    • setRealTime リンク・アイコン

      public void setRealTime(String flag)
      【TAG】(通常は使いません)リアルタイムチェックを行う場合に有効にします(初期値:false)。
      パラメータ:
      flag - リアルタイムチェック [true:する/false:しない]
      変更履歴:
      4.3.3.0 (2008/10/01) 新規作成, 4.3.7.0 (2009/06/01) viewSimple属性名称変更 ⇒ isRealTime
      説明:
      リアルタイムチェックを行う場合に有効にする属性です。 trueが指定された場合、通常のチェックと比較し、以下の差異があります。 ①エラー結果を簡易フォーマットで出力します。 (ViewFormType="HTMLSimpleErrorList"で表示されます。) この簡易フォーマットで出力した場合は、ラベル(短)の定義で出力され、 カラム名やデータ等は出力されません。 ②must,mustAny属性のチェックを行いません。 必須及び選択必須は、視覚的に判別できるため、リアルタイムチェックの 対象外とします。
    • setUseStrict リンク・アイコン

      public void setUseStrict(String flag)
      【TAG】NEWの場合に、厳密にチェックするかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
      flag - 厳密チェックか [true:厳密/false:甘い]
      変更履歴:
      5.2.2.0 (2010/11/01) 新規作成
      説明:
      データをチェックするに当たり、あいまい検索などで厳密にチェックすると エラーになるケースがあるため、command="NEW" のチェック時には、甘い目の チェックを行っています。DBColumn#valueCheck( String , false ) command="ENTRY" のチェックは、厳密なチェックです。 このフラグは、検索時でも、厳密なチェックを行いたい場合に、true をセットします。
    • setUseColumnLabel リンク・アイコン

      public void setUseColumnLabel(String flag)
      【TAG】カラムラベルを使用するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
      flag - カラムラベル使用 [true:する/false:しない]
      変更履歴:
      5.4.3.4 (2012/01/12) 新規作成
      説明:
      カラムラベルはラベルローダーを利用せずにアプリケーション側で 追加したラベルをResourceManagerにキャッシュしている所から取り出す かどうかを指定します。 カラムラベルに存在しない場合は、通常のラベルから検索します。
    • setCheckNames リンク・アイコン

      public void setCheckNames(String nm)
      【TAG】リクエスト変数の正規化を行うカラムをCSV形式で複数指定します。
      パラメータ:
      nm - 正規化を行うカラム(CSV形式)
      変更履歴:
      5.4.3.8 (2012/01/24) 新規追加, 5.4.4.0 (2012/02/01) コメント修正, 5.6.9.4 (2013/10/31) 空白削除を行う, 6.9.2.1 (2018/03/12) 使用箇所が、1箇所だけなので、StringUtilから移動する。
      説明:
      カラムチェックで正規化が行われていないプラグインに対して強制的に正規化を行います。 この属性を利用したチェックを行った場合は、queryタグでPL/SQLを動作させる場合にも 同名属性でカラムの指定を行う必要があります。 (queryタグでcheckNamesを利用しない場合はこの属性はnullにしてください) この属性はチェックタイプがNEWの場合のみ有効です。 リアルタイムチェックでこの機能を利用したい場合は、columnTag等に rtoption="checkNames=VIEW_DATE"のように記述してください。
    • setUseSLabel リンク・アイコン

      public void setUseSLabel(String prm)
      【TAG】エラーメッセージにSLABELを利用するかどうか[true/false]を指定します(初期値:false)。
      パラメータ:
      prm - SLABEL利用 [true:利用する/false:利用しない]
      変更履歴:
      7.0.7.0 (2019/12/13) 新規追加
      説明:
      通常のエラーメッセージは、ラベル(長)が使われますが、これをラベル(短)を使いたい場合に、true にセットします。 ここでのラベル(短)は、タグ修飾なしの、ラベル(短)です。 標準はfalse:利用しない=ラベル(長)です。 true/false以外を指定した場合はfalse扱いとします。 ラベルリソースの概要説明があれば表示しますが、useSLabel="true" 時は、概要説明を表示しません。
    • toString リンク・アイコン

      public String toString()
      このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。
      オーバーライド:
      toString クラス内 CommonTagSupport
      戻り値:
      このクラスの文字列表現
      このメソッドは、nullを返しません