クラス DataCheckTag

  • すべての実装されたインタフェース:
    java.io.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}にはそれぞれ[カラム名]指定されたカラム名及びデータがCSV形式で 自動的に設定されます。 ※ このタグは、Transaction タグの対象です。
    関連項目:
    直列化された形式
    機能分類
    DB登録
    形式サンプル:
     ●形式:
           ・<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)
           from               【TAG】tableExist タグ廃止に伴う、簡易機能追加。チェックするデータベース名(from 句)を指定します。
           where              【TAG】tableExist タグ廃止に伴う、簡易機能追加。チェックする検索条件(where句)を指定します。
           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:dataCheck>
    
     【廃止】6.9.0.0 (2018/01/31) 物理削除
       //  msg                【廃止】メッセージIDを指定します(lbl 属性を使用してください)
       //  msgParamKeys       【廃止】メッセージリソースの引数をCSV形式で指定します(lblParamKeys 属性を使用してください)
    
     ●使用例
           ・<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) 新規作成
    バージョン
    4.0
    作成者
    Hiroki Nakamura
    導入されたバージョン:
    JDK5.0,
    • フィールドの詳細

      • CMD_NEW

        public static final java.lang.String CMD_NEW
        command 引数に渡す事の出来る コマンド "NEW"
        関連項目:
        定数フィールド値
      • CMD_ENTRY

        public static final java.lang.String CMD_ENTRY
        command 引数に渡す事の出来る コマンド "ENTRY"
        関連項目:
        定数フィールド値
    • コンストラクタの詳細

      • DataCheckTag

        public DataCheckTag()
        デフォルトコンストラクター
        変更履歴:
        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
        戻り値:
        後続処理の指示
        変更履歴:
        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 属性対応
      • doAfterBody

        public int doAfterBody()
        Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
        定義:
        doAfterBody インタフェース内 IterationTag
        オーバーライド:
        doAfterBody クラス内 CommonTagSupport
        戻り値:
        後続処理の指示(SKIP_BODY)
        変更履歴:
        4.3.4.0 (2008/12/01) 新規追加, 6.3.1.1 (2015/07/10) BodyString,BodyRawStringは、CommonTagSupport で、trim() します。
      • doEndTag

        public int doEndTag()
        Taglibの終了タグが見つかったときに処理する 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構築に対応。, 7.0.7.0 (2019/12/13) useSLabel 属性を追加。
      • release2

        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 は、パラメータではなく、ローカル変数。, 7.0.7.0 (2019/12/13) useSLabel 属性を追加。
      • setTableId

        public void setTableId​(java.lang.String id)
        【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。
        パラメータ:
        id - テーブルID (sessionに登録する時のID)
        説明:
        検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=])。
      • setDbid

        public void setDbid​(java.lang.String id)
        【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します(初期値:null)。
        パラメータ:
        id - データベース接続ID
        説明:
        Queryオブジェクトを作成する時のDB接続IDを指定します。
      • setCommand

        public void setCommand​(java.lang.String cmd)
        【TAG】コマンド (NEW or ENTRY)をセットします。
        パラメータ:
        cmd - コマンド (public static final 宣言されている文字列)
        関連項目:
        コマンド定数
        説明:
        コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される フィールド定数値のいづれかを、指定できます。
      • setExist

        public void setExist​(java.lang.String ext)
        【TAG】データベースのチェック方法[auto/true/false/one/notuse]を指定します(初期値:auto[自動])。
        パラメータ:
        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:自動」です。
      • setErrRemove

        public void setErrRemove​(java.lang.String flag)
        【TAG】エラー時の選択行を取り除いて継続処理を行うかどうか[true/false]を指定します(初期値:false)。
        パラメータ:
        flag - エラーデータを除外 [true:継続処理/false:エラー時停止]
        説明:
        exist 属性に指定された 、「true:存在する」、「false:存在しない」、「one:ひとつ以下」、 に対して、エラーが発生した選択行番号を、取り除いて以下の処理を継続するかどうかを 指定します。 true に設定した場合は、エラーデータを削除し、継続処理を行うことができます。 flase の場合は、エラーデータを表示して、継続処理を停止します。 初期値は、「false:エラー時停止」です。
      • setLbl

        public void setLbl​(java.lang.String id)
        【TAG】ラベルリソースのラベルIDを指定します。
        オーバーライド:
        setLbl クラス内 CommonTagSupport
        パラメータ:
        id - メッセージID
        関連項目:
        setLblParamKeys( 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 を使用してください。
      • setLblParamKeys

        public void setLblParamKeys​(java.lang.String keys)
        【TAG】ラベルリソースの引数をCSV形式で指定します。
        パラメータ:
        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) 新規追加
      • setSqlType

        public void setSqlType​(java.lang.String type)
        【TAG】このチェックを行う、SQLタイプ を指定します。
        パラメータ:
        type - このチェックを行うSQLタイプ
        説明:
        SQLタイプは、INSERT,COPY,UPDATE,MODIFY,DELETE などの記号を指定します。 一般には、result 画面から update 画面へ遷移するときの、command と 同じにしておけばよいでしょう。 これは、execType とマッチした場合のみ、このチェックが処理されます。 簡易 equals タグの代役に使用できます。 なにも指定しない場合は、チェックは実行されます。
        変更履歴:
        4.1.2.0 (2008/03/12) 新規追加
      • setExecType

        public void setExecType​(java.lang.String type)
        【TAG】このチェックを行う、実行タイプ を指定します。
        パラメータ:
        type - このチェックを行う実行タイプ
        説明:
        実行タイプは、sqlType とマッチした場合のみ、このチェックが処理されます。 簡易 equals タグの代役に使用できます。 execType は、複数指定が可能です。単純な文字列マッチで、sqlType を 含めば、実行されます。 例えば、sqlType={@sqlType} execType="INSERT|COPY" とすれば、 sqlType に、INSERT または、COPY が登録された場合にチェックが掛かります。 なにも指定しない場合は、チェックは実行されます。
        変更履歴:
        4.1.2.0 (2008/03/12) 新規追加
      • setConditionKey

        public void setConditionKey​(java.lang.String key)
        【TAG】条件判定するカラムIDを指定します(初期値:null)。
        パラメータ:
        key - カラムID
        関連項目:
        setConditionList( String )
        説明:
        指定のカラムIDの値と、conditionList の値を比較して、 存在する場合は、check処理を実行します。 この処理が有効なのは、command="ENTRY" の場合のみです。
        変更履歴:
        4.2.0.1 (2008/03/27) 新規追加
      • setConditionList

        public void setConditionList​(java.lang.String list)
        【TAG】条件判定する値のリストを、"|"で区切って登録します(初期値:無条件)。
        パラメータ:
        list - 条件判定する値("|"で区切)
        関連項目:
        setConditionKey( String )
        説明:
        conditionKey とペアで指定します。ここには、カラムの設定値のリストを 指定することで、複数条件(OR結合)での比較を行い、リストにカラム値が 存在する場合のみ、check処理を実行します。 この処理が有効なのは、command="ENTRY" の場合のみです。 設定しない場合は、無条件に実行します。
        変更履歴:
        4.2.0.1 (2008/03/27) 新規追加
      • setUniqCheckClms

        public void setUniqCheckClms​(java.lang.String clm)
        【TAG】指定されたキーに従って、メモリ上のテーブルに対してユニークキーチェックを行います。
        パラメータ:
        clm - チェックキー(CSV形式)
        説明:
        ユニークキーチェックを行うキーを指定します。ここで、指定されたキーに対して、 DBTableModelの値をチェックし、全てのキーに同じ値となっている行が存在すればエラーとなります。 このチェックは、command="ENTRY"の場合のみ有効です。 また、このチェックは他のチェック(DB存在チェックなど)と同時に処理することはできません。 キーが指定され手いる場合は、ボディ部分に記述されている定義は無視されます。 errRemoveの属性がtrueに指定されている場合、重複行は、DBTableModelの並び順から見て、 最初の行のみ処理され、2つめ以降の重複行は無視されます。 なお、キーはCSV形式(CSV形式)で複数指定が可能です。
        変更履歴:
        4.3.4.0 (2008/12/01) 新規追加
      • setBeforeErrorJsp

        public void setBeforeErrorJsp​(java.lang.String jsp)
        【TAG】エラーが発生した際に、エラーメッセージの表示前にincludeするJSPを指定します。
        パラメータ:
        jsp - 表示前にincludeするJSPファイル名
        説明:
        エラーが発生した際に、エラーメッセージの表示前にincludeするJSPを指定します。 エラーが発生していない場合は、ここで指定されたJSPが処理されることはありません。 通常は、戻るリンクなどを指定します。 指定の方法は、相対パス、絶対パスの両方で指定することができます。 但し、絶対パスで指定した場合、その基点は、コンテキストのルートディレクトリになります。 例) beforeErrorJsp = "/jsp/common/history_back.jsp"
        変更履歴:
        5.1.9.0 (2010/08/01) 新規追加
      • setAfterErrorJsp

        public void setAfterErrorJsp​(java.lang.String jsp)
        【TAG】エラーが発生した際に、エラーメッセージの表示後にincludeするJSPを指定します。
        パラメータ:
        jsp - 表示後にincludeするJSPファイル名
        説明:
        エラーが発生した際に、エラーメッセージの表示前にincludeするJSPを指定します。 エラーが発生していない場合は、ここで指定されたJSPが処理されることはありません。 指定の方法は、相対パス、絶対パスの両方で指定することができます。 但し、絶対パスで指定した場合、その基点は、コンテキストのルートディレクトリになります。 例) afterErrorJsp = "/jsp/common/history_back.jsp"
        変更履歴:
        5.1.9.0 (2010/08/01) 新規追加
      • setSelectedAll

        public void setSelectedAll​(java.lang.String all)
        【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。
        パラメータ:
        all - 選択済み処理可否 [true:全件選択済み/false:通常]
        説明:
        全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、(true/false)を指定します。 初期値は false です。
        変更履歴:
        5.1.9.0 (2010/08/01) 新規追加
      • setFrom

        public void setFrom​(java.lang.String frm)
        【TAG】チェックするデータベース名(from 句)を指定します。
        パラメータ:
        frm - チェックするテーブルID
        説明:
        これは、tableExist タグ廃止に伴う便利機能で、通常、BODYに記述された SELECT count(*) from XXXX where XXXXX で、チェックしますが、 from 属性 と、where 属性を指定する事で、内部で、チェック用のSQL文を 作成します。 from が指定された場合は、BODY は無視されますので、ご注意ください。
        変更履歴:
        5.7.6.2 (2014/05/16) 新規追加
      • setWhere

        public void setWhere​(java.lang.String whr)
        【TAG】チェックする検索条件(where句)を指定します。
        パラメータ:
        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) 新規追加
      • setUseSLabel

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

        protected int[] getParameterRows()
        表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。
        オーバーライド:
        getParameterRows クラス内 CommonTagSupport
        戻り値:
        選択行の配列
        変更履歴:
        5.1.9.0 (2010/08/01) 新規追加
        このメソッドは、nullを返しません
      • toString

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