クラス BizLogicTag
java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
jakarta.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.BizLogicTag
- すべての実装されたインタフェース:
BodyTag
,IterationTag
,JspTag
,Tag
,TryCatchFinally
,Serializable
業務ロジックを呼び出すためのタグです。
logics属性に呼び出す業務ロジックのクラス名を記述します。
このタグでは、複数の業務ロジックを1度に呼び出すことができ、
DB接続のcommit,rollbackは一番最後に、1度のみ実行されます。
各業務ロジックは、記述した順番に呼び出されます。
業務ロジックは、
AbstractBizLogic
を
継承したサブクラスである必要があります。
標準サブクラスとして、BizLogic_ENTRYとBizLogic_TABLE を用意しています。
BizLogic_ENTRY は、パラメーターのみを使用する業務ロジックです。
BizLogic_TABLE は、配列型テーブルモデルをメインカーソルとした業務ロジックです。
配列型テーブルモデルでは、初期処理、ループ処理、後処理とメソッドがコールされます。
fstchk() 変更区分に関わらず 処理を始める前に呼び出し
first() 変更区分に関わらず 最初の行でのみ呼び出し
useLoop == true
befall( int row ) 変更区分に関わらず 各行について呼び出し(insert,modify,deleteの前に呼び出し)
insert( int row ) 変更区分が"A"の場合 各行について呼び出し
modify( int row ) 変更区分が"C"の場合 各行について呼び出し
delete( int row ) 変更区分が"D"の場合 各行について呼び出し
allrow( int row ) 変更区分に関わらず 各行について呼び出し(insert,modify,deleteの後に呼び出し)
last() 変更区分に関わらず 最後の行でのみ呼び出し
業務ロジッククラスについては、ホットデプロイ機能により、動的コンパイル、クラスロードが
行われます。
業務ロジックのソースディレクトリは、システムリソースの BIZLOGIC_SRC_PATH で定義されます。
また、同様にクラスディレクトリは、システムリソースの BIZLOGIC_CLASS_PATH で定義されます。
さらに、システムリソースの BIZLOGIC_HOTDEPLOY を false に設定することで、動的コンパイル
クラスロードを行わなくすることもできます。
この場合、予めコンパイルされたクラスを、初回呼び出し時に1回のみロードされます。
SystemData の USE_SQL_INJECTION_CHECK が true か、quotCheck 属性が true の場合は、
SQLインジェクション対策用のシングルクォートチェックを行います。リクエスト引数に
シングルクォート(')が含まれると、エラーになります。
同様にUSE_XSS_CHECKがtrueか、xssCheck属性がtrueの場合は、
クロスサイトススクリプティング(XSS)対策のためless/greater than signのチェックを行います。
※ このタグは、Transaction タグの対象です。- 関連項目:
- 変更履歴:
- 5.1.1.0 (2009/12/01) 新規作成
- 機能分類
- 業務ロジック
- 形式サンプル:
- ●形式: <og:bizLog logics = "業務ロジックのクラス名" command = "ENTRY" scope = "session" dbid = "DEFAULT" tableId = "DEFAULT" selectedAll = "false" modifyType = "A" keys = "SYSTEM_ID" vals = "{@SYSTEM_ID}" /> ●body:なし ●Tag定義: <og:bizLogic logics ○【TAG】実行する業務ロジック名を指定します (必須) command 【TAG】コマンドをセットします (初期値:ENTRY) scope 【TAG】キャッシュする場合のスコープ[request/session/application]を指定します (初期値:session) dbid 【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します (初期値:null) tableId 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します selectedAll 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します (初期値:false) modifyType 【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除] keys 【TAG】リンク先に渡すキーをCSV形式で複数指定します vals 【TAG】リンク先に渡す値をCSV形式で複数指定します stopError 【TAG】処理エラーの時に処理を中止するかどうか[true/false]を設定します (初期値:true) dispError 【TAG】エラー時にメッセージを表示するか[true/false]を設定します。通常はstopErrorと併用 (初期値:true) quotCheck 【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=true]) xssCheck 【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=true]) multi 【TAG】vals属性でパラメーターを取得する際、複数件存在する場合に、値を連結するかどうかを指定します (初期値:false) debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します (初期値:false) /> ●使用例 <!-- 業務ロジックの呼び出しを行います --> <og:bizLogic logics="org.opengion.logic.gf9110.BizLogic_0001" keys="SYSTEM_ID" vals="{@MEM.SYSTEM_ID}" />
- 導入されたバージョン:
- JDK1.6,
-
フィールドの概要
フィールドクラスから継承されたフィールド org.opengion.hayabusa.taglib.CommonTagSupport
BR, BUFFER_MIDDLE, CR
クラスから継承されたフィールド jakarta.servlet.jsp.tagext.BodyTagSupport
bodyContent
クラスから継承されたフィールド jakarta.servlet.jsp.tagext.TagSupport
id, pageContext
インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.BodyTag
EVAL_BODY_BUFFERED, EVAL_BODY_TAG
インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.IterationTag
EVAL_BODY_AGAIN
インタフェースから継承されたフィールド jakarta.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明int
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。int
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。protected int[]
表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。protected void
release2()
タグリブオブジェクトをリリースします。void
setCommand
(String cmd) 【TAG】コマンドをセットします(初期値:ENTRY)。void
【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します(初期値:null)。void
setDispError
(String flag) 【TAG】PLSQL/SQL処理エラーの時にエラーを画面表示するか[true/false]を設定します(初期値:true)。void
【TAG】リンク先に渡すキーをCSV形式で複数指定します。void
【TAG】実行する業務ロジック名を指定します。void
setModifyType
(String type) 【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除]。void
【TAG】vals属性でパラメーターを取得する際、複数件存在する場合に、値を連結するかどうかを指定します(初期値:false)。void
setQuotCheck
(String flag) 【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=])。void
setSelectedAll
(String all) 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。void
setStopError
(String flag) 【TAG】処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。void
setTableId
(String id) 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。void
【TAG】リンク先に渡す値をCSV形式で複数指定します。void
setXssCheck
(String flag) 【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=])。toString()
このオブジェクトの文字列表現を返します。クラスから継承されたメソッド org.opengion.hayabusa.taglib.CommonTagSupport
add, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, debugPrint, doAfterBody, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLongLabel, getMsg, getMsglbl, getObject, getParameterNames, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, 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, useStrict, useTag, useXssCheck
クラスから継承されたメソッド jakarta.servlet.jsp.tagext.BodyTagSupport
doInitBody, getBodyContent, getPreviousOut, release, setBodyContent
クラスから継承されたメソッド jakarta.servlet.jsp.tagext.TagSupport
findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue
クラスから継承されたメソッド java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
インタフェースから継承されたメソッド jakarta.servlet.jsp.tagext.Tag
getParent, setPageContext, setParent
-
フィールド詳細
-
CMD_ENTRY
command 引数に渡す事の出来る コマンド エントリー "ENTRY"- 関連項目:
-
-
コンストラクタの詳細
-
BizLogicTag
public BizLogicTag()デフォルトコンストラクター- 変更履歴:
- 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
-
-
メソッドの詳細
-
doStartTag
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。- 定義:
doStartTag
インタフェース内Tag
- オーバーライド:
doStartTag
クラス内CommonTagSupport
- 戻り値:
- 後続処理の指示(SKIP_BODY)
- 変更履歴:
- 5.3.4.0 (2011/04/01) command=ENTRY以外ではDBTableModelの処理を行わない。, 6.4.8.1 (2016/07/02) xssCheckを、doStartTag に移動
-
doEndTag
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。- 定義:
doEndTag
インタフェース内Tag
- オーバーライド:
doEndTag
クラス内CommonTagSupport
- 戻り値:
- 後続処理の指示
- 変更履歴:
- 5.1.8.0 (2010/07/01) isMulti対応, 5.3.4.0 (2011/04/01) command=ENTRY以外ではDBTableModelの処理を行わない。, 6.4.8.1 (2016/07/02) xssCheckを、doStartTag に移動, 5.9.26.1 (2017/11/10) dispErrorの処理追加, 8.3.1.0 (2022/10/14) 正常終了時、過去のエラーメッセージが消えない不具合対応
-
release2
タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。- オーバーライド:
release2
クラス内CommonTagSupport
- 変更履歴:
- 5.1.8.0 (2010/07/01) isMultiを追加, 5.1.9.0 (2010/08/01) Transaction 対応, 5.9.26.1 (2017/11/10) dispError追加, 8.0.2.0 (2021/11/30) srcDir,classDir static定義定数を使用
-
setCommand
【TAG】コマンドをセットします(初期値:ENTRY)。- パラメータ:
cmd
- コマンド (public static final 宣言されている文字列)- 関連項目:
- 説明:
- command=ENTRY以外ではDBTableModelの処理を行いません。 コマンドは、HTMLから[get/post]指定されますので、CMD_xxx で設定される フィールド定数値のいづれかを、指定できます。
-
setLogics
【TAG】実行する業務ロジック名を指定します。- パラメータ:
lgs
- 業務ロジック名- 説明:
- 実行する業務ロジック名を指定します。業務ロジック名は、クラス名を指定します。 クラス名については、クラス自身の名称のみを指定することができます。 (パッケージ名を含めた完全な形のクラス名を指定することもできます) また、CSV形式で、複数指定することもできます。 この場合、指定した順番に処理されます。
-
setDbid
【TAG】(通常は使いません)Queryオブジェクトを作成する時のDB接続IDを指定します(初期値:null)。- パラメータ:
id
- データベース接続ID- 説明:
- Queryオブジェクトを作成する時のDB接続IDを指定します。 これは、システムリソースで、DEFAULT_DB_URL 等で指定している データベース接続先 情報に、XX_DB_URL を定義することで、 dbid="XX" とすると、この接続先を使用して データベースにアクセスできます。
-
setTableId
【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。- パラメータ:
id
- テーブルID (sessionに登録する時のID)- 説明:
- 検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=])。
-
setSelectedAll
【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。- パラメータ:
all
- データを全件選択済み [true:全件選択済み/false:通常]- 説明:
- 全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、(true/false)を指定します。 初期値は false です。
-
setModifyType
【TAG】DB検索時の モディファイタイプを指定します[A:追加/C:更新/D:削除]。- パラメータ:
type
- モディファイタイプ [A:追加/C:更新/D:削除]- 説明:
- DB検索時に、そのデータをA(追加)、C(更新)、D(削除)のモディファイタイプを つけた状態にします。 その状態で、そのまま、update する事が可能になります。
-
setKeys
【TAG】リンク先に渡すキーをCSV形式で複数指定します。- パラメータ:
key
- リンク先に渡すキー(CSV形式)- 変更履歴:
- 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用
- 説明:
- リンク先に渡すキーを指定します。 Keysだけを指定して、Valsを指定しない場合、Keysで指定された項目名に対応するパラメーターを取得し、 Valsとして使用します。
-
setVals
【TAG】リンク先に渡す値をCSV形式で複数指定します。- パラメータ:
val
- リンク先に渡す値(CSV形式)- 変更履歴:
- 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用, 5.1.8.0 (2010/07/01) isMuitl対応
- 説明:
- リンク先に渡す値を指定します。 Keysだけを指定して、Valsを指定しない場合、Keysで指定された項目名に対応するパラメーターを取得し、 Valsとして使用します。 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。
-
setStopError
【TAG】処理エラーの時に処理を中止するかどうか[true/false]を設定します(初期値:true)。- パラメータ:
flag
- 処理の中止 [true:中止する/false:中止しない]- 説明:
- false(中止しない)に設定する場合、後続処理では、{@DB.ERR_CODE}の値により、 PLSQL/SQLの異常/正常終了によって分岐処理は可能となります。 初期値は、true(中止する)です。
-
setDispError
【TAG】PLSQL/SQL処理エラーの時にエラーを画面表示するか[true/false]を設定します(初期値:true)。- パラメータ:
flag
- [true:表示する/false:表示しない]- 変更履歴:
- 5.9.26.1 (2017/11/10) 新規追加
- 説明:
- false(表示しない)に設定する場合、後続処理では、{@DB.ERR_MSG}の値により、 本来表示されるはずだったメッセージを取得可能です。 stopErrorと併用して、JSON形式でエラーを返す場合等に利用します。 初期値は、true(表示する)です。
-
setQuotCheck
【TAG】リクエスト情報の シングルクォート(') 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_SQL_INJECTION_CHECK[=])。- パラメータ:
flag
- クォートチェック [true:する/それ以外:しない]- 関連項目:
- 説明:
- SQLインジェクション対策の一つとして、暫定的ではありますが、SQLのパラメータに 渡す文字列にシングルクォート(') を許さない設定にすれば、ある程度は防止できます。 数字タイプの引数には、 or 5=5 などのシングルクォートを使用しないコードを埋めても、 数字チェックで検出可能です。文字タイプの場合は、必ず (')をはずして、 ' or 'A' like 'A のような形式になる為、(')チェックだけでも有効です。 (') が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。 (初期値:システム定数のUSE_SQL_INJECTION_CHECK[=])。
-
setXssCheck
【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=])。- パラメータ:
flag
- XSSチェックする [true:チェックする/false:しない]- 関連項目:
- 説明:
- クロスサイトスクリプティング(XSS)対策の一環としてless/greater than signについてのチェックを行います。 (><) が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。 (初期値:システム定数のUSE_XSS_CHECK[=])。
-
setMulti
【TAG】vals属性でパラメーターを取得する際、複数件存在する場合に、値を連結するかどうかを指定します(初期値:false)。- パラメータ:
flag
- 値連結 [true:する/false:しない]- 変更履歴:
- 5.1.8.0 (2010/07/01) 新規作成
- 説明:
- この属性がtrueに指定された場合、パラメーターが複数存在する場合に、カンマで連結します。 初期値は、false(連結しない)です。
-
getParameterRows
表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。- オーバーライド:
getParameterRows
クラス内CommonTagSupport
- 戻り値:
- 選択行の配列
-
toString
このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。- オーバーライド:
toString
クラス内CommonTagSupport
- 戻り値:
- このクラスの文字列表現
- このメソッドは、nullを返しません
-