クラス ValueMapTag
java.lang.Object
jakarta.servlet.jsp.tagext.TagSupport
jakarta.servlet.jsp.tagext.BodyTagSupport
org.opengion.hayabusa.taglib.CommonTagSupport
org.opengion.hayabusa.taglib.ValueMapTag
- すべての実装されたインタフェース:
BodyTag
,IterationTag
,JspTag
,Tag
,TryCatchFinally
,Serializable
DBTableModelオブジェクトから、指定のキー情報と、レコードから、Mapオブジェクトを作成し、それを、
BODY部のフォーマットに対応して、出力します。
valueタグの、command="MAPOBJ" や、ALL_MAPOBJ に相当する処理を、複数キーと行レベルのデータで
管理します。
設定した値は、Mapを優先した、特殊な {@XXXX} 形式で 取り出すことができます。
keys で、CSV形式でカラム名を指定し、これらを、連結した文字列を、Mapのキー情報に使います。
Mapの値情報は、そのレコードの配列になります。
keys を指定しない場合は、最初のカラムの値が、キーになります。
キーが重複する場合、先に現れたデータが優先されます。
値の取出し方法は、キーに対して、{@XXXX} 形式を、適用します。
Map に存在しないキーは、リクエスト変数や、通常のvalus変数を見ます。
valClm で、{@XXXX} 形式で取り出す値のカラムを指定できます。
valClm を指定しない場合は、2番目のカラムを使用します。
特殊機能
・holdTag属性:{@XXXX} を、指定のタグで囲います。
例えば、holdTag="span" とすると、<span class="YYYYの値" >XXXXの値</span>
という文字列を作成します。
・clsClms属性:先の指定のタグで囲う場合、そのタグのclass属性を指定できます。
複数指定した場合は、スペースで、連結します。
・{@XXXX cls="B"} とすると、個別の clsClms の値を使用せず、この値を、class属性として使います。
clsClms と同様に、holsTag属性を指定しておく必要があります。
・tipsClms属性:先の指定のタグで囲う場合、そのタグのtitle属性を指定できます。
マウスオーバーで、チップス表示されます。
・{@XXXX tips="YYYY"} とすると、個別の tipsClms の値を使用せず、この値を、title属性として使います。
tipsClms と同様に、holsTag属性を指定しておく必要があります。
・nnClms属性:この属性で指定された値が、nullの場合、{@XXXX} の解析を行いません。
正確に言うと、Mapに取り込みません。この場合、先のholdTag属性で指定したタグそのものも
出力しません。
・{@XXXX* str="val"} とすると、キーワードのあいまい検索部分に、strで指定した
val文字列が存在する場合のみ有効とします。
・キーに対して、Mapは、行データ全部を持っています。{@XXXX} は、最初のカラムの値です。
・2番目を取得する場合は、{@XXXX 1}と、3番目は、{@XXXX 2}と指定します。
・{@XXXX*} を指定すると、キーのあいまい検索で、キーそのものを複数選択することが出来ます。
この場合、spanタグで囲う機能と併用すると、複数のspanタグを持つ文字列を合成できます。
この特定のタグは、holdTag 属性で指定します。
このキーのあいまい検索で、表示する順番は、DBTableModelでMapに読み込んだ順番になります。
{@XXXX* 2} のような、取得カラムの指定も可能です。
取得カラムの指定も可能ですが、カラム番号は、常に一番最後に記述してください。
・{@XXXX!*} とすると、表示する順番を、逆順にすることが出来ます。取得カラムの指定も可能です。
・{@$XXXX} とすると、holdTagも、clsClms も使用せず、設定値のみ出力します。
この場合は、固定値になるため、holsTagも、clsClms も使用しません。
・{@*XXXX!*} とすると、キーのあいまい指定の残り部分の文字列を出力します。連番の場合の番号を取り出せます。
・{@^XXXX} とすると、request.getAttribute()の値を優先して使用します。{@^XXXX*}などのあいまい指定も可能です。
この場合、オリジナルのキーは、DBTableModel上に必要です。値の入れ替えのみ、行う感じです。
※ このタグは、Transaction タグの対象です。
- 関連項目:
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- 機能分類
- その他部品
- 形式サンプル:
- ●形式:<og:valueMap /> ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を特殊な方法で解析します) ●Tag定義: <og:valueMap keys 【TAG】パラメータから取り出すキーとなるカラム名を、CSV形式で指定します(初期値:最初のカラム) valClm 【TAG】パラメータから取り出す値のカラム名を指定します(初期値:2番目のカラム) holdTag 【TAG】値の前後を、指定のタグで挟みます clsClms 【TAG】holdTagを使用するとき、そのタグの属性にclass属性を出力する場合のカラム名をCSV形式で指定します tipsClms 【TAG】holdTagを使用するとき、そのタグの属性にtitle属性を出力する場合のカラム名をCSV形式で指定します nnClms 【TAG】パラメータが NULL の時に、設定しないカラム名を、CSV形式で指定します reqAttUpClms 【TAG】{@^XXXX}使用時に request.getAttribute() をセットすると同時に設定するカラム名をCSV形式で指定します 6.9.2.0 (2018/03/05) selectedAll 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:true) separator 【TAG】キーとなるカラム名の値を連結する項目区切り文字をセットします(初期値:"_") tableId 【TAG】sessionから取得する DBTableModelオブジェクトの ID(初期値:HybsSystem.TBL_MDL_KEY) scope 【TAG】DBTableModelオブジェクトを取得する場合の、scope(初期値:session) xssCheck 【TAG】パラメータの HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=true]) 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:valueMap> ●使用例 <og:query command="{@command}" debug="{@debug}" maxRowCount="{@maxRowCount}"> select CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG, FGJ,USRSET,DYSET,USRUPD,DYUPD from GF41 <og:where> <og:and value = "SYSTEM_ID = '{@SYSTEM_ID}'" /> <og:and value = "LANG = '{@LANG}'" /> <og:and value = "CLM like '{@CLM}'" /> <og:and value = "NAME_JA like '{@NAME_JA}'" /> <og:and value = "LABEL_NAME like '{@LABEL_NAME}'" /> <og:and value = "KBSAKU = '{@KBSAKU}'" /> </og:where> <og:appear startKey = "order by" value = "{@ORDER_BY}" defaultVal = "SYSTEM_ID,CLM,LANG" /> </og:query> <og:valueMap keys="SYSTEM_ID,CLM" holdTag="div" separator="_" clsClms="LANG,FGJ" > {@XX_AA0001} <br /> SYSTEM_IDとCLMの値を、separatorで連結。値は、キーの次(LABEL_NAME) {@XX_AA0001 1} <br /> 行番号の2番目(上のSQLではNAME_JA)の値 {@XX_AA0001 2} <br /> 行番号の3番目(上のSQLではLABEL_NAME)の値 {@XX_AA001* 2} <br /> キーの前方一致する行の3番目の値 {@XX_AA000!* 1} キーの前方一致する行の2番目の値を、逆順で表示 </og:valueMap> ・ キーは、select文の1番目のカラム <og:og:valueMap > ・・・フォーマット・・・ </og:valueMap> ・ キーが複数で、ユニークになる。(keys) <og:og:valueMap keys="SYSTEM_ID,CLM" > ・・・フォーマット・・・ </og:valueMap> ・ 値をdivタグで囲う。(holdTag) <og:og:valueMap keys="SYSTEM_ID,CLM" holdTag="div" > ・・・フォーマット・・・ </og:valueMap> ・ キーの連結のセパレータを指定。(separator) <og:og:valueMap keys="SYSTEM_ID,CLM" holdTag="div" separator="_" > ・・・フォーマット・・・ </og:valueMap> ・ 値をdivタグで囲う時に、クラス属性を追加します。(clsClms) <og:og:valueMap keys="SYSTEM_ID,CLM" holdTag="div" separator="_" clsClms="LANG,FGJ" > ・・・フォーマット・・・ </og:valueMap> ・ 値をdivタグで囲う時に、チップス表示(title属性)を追加します。(tipsClms) <og:og:valueMap keys="SYSTEM_ID,CLM" holdTag="div" separator="_" clsClms="LANG,FGJ" tipsClms="NAME_JA,LABEL_NAME" > ・・・フォーマット・・・ </og:valueMap>
- 導入されたバージョン:
- JDK8.0,
-
フィールドの概要
クラスから継承されたフィールド 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
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。int
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。int
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。protected int[]
表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。protected String
getRequestValue
(String key) リクエスト情報の文字列を取得します。protected void
release2()
タグリブオブジェクトをリリースします。void
setClsClms
(String clms) 【TAG】holdTagを使用するとき、そのタグの属性にclass属性を出力する場合のカラム名をCSV形式で指定します。void
setHoldTag
(String tag) 【TAG】値の前後を、挟むタグを指定します。void
【TAG】パラメータ に登録するキーをセットします。void
【TAG】パラメータが NULL の時に、設定しないカラム名を、CSV形式で指定します。protected void
ValueMapParamTagで設定された各種パラメータ を受け取ります。void
setReqAttUpClms
(String clms) 【TAG】{@^XXXX}使用時に request.getAttribute() をセットすると同時に設定するカラム名をCSV形式で指定します。void
setSelectedAll
(String all) 【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。void
setSeparator
(String sepa) 【TAG】キーとなるカラム名の値を連結する項目区切り文字をセットします(初期値:"_")。void
setTableId
(String id) 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。void
setTipsClms
(String clms) 【TAG】holdTagを使用するとき、そのタグの属性にtitle属性を出力する場合のカラム名をCSV形式で指定します。void
【TAG】パラメータ から取り出す値カラムを指定ます。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, 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, 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
-
コンストラクタの詳細
-
ValueMapTag
public ValueMapTag()デフォルトコンストラクター- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
-
-
メソッドの詳細
-
doStartTag
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。- 定義:
doStartTag
インタフェース内Tag
- オーバーライド:
doStartTag
クラス内CommonTagSupport
- 戻り値:
- 後続処理の指示
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
-
doAfterBody
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。- 定義:
doAfterBody
インタフェース内IterationTag
- オーバーライド:
doAfterBody
クラス内CommonTagSupport
- 戻り値:
- 後続処理の指示(SKIP_BODY)
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
-
doEndTag
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。- 定義:
doEndTag
インタフェース内Tag
- オーバーライド:
doEndTag
クラス内CommonTagSupport
- 戻り値:
- 後続処理の指示
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
-
release2
タグリブオブジェクトをリリースします。 キャッシュされて再利用されるので、フィールドの初期設定を行います。- オーバーライド:
release2
クラス内CommonTagSupport
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成, 6.7.2.0 (2017/01/16) valClm 追加, 6.7.3.0 (2017/01/27) tipsClms 追加, 6.7.8.0 (2017/04/21) valueMapParam関連, 6.9.2.0 (2018/03/05) reqAttUpClms 追加
-
getRequestValue
リクエスト情報の文字列を取得します。 これは、CommonTagSupportの#getRequestValue( String ) を オーバーライドして、Mapから、設定値を取得します。- オーバーライド:
getRequestValue
クラス内CommonTagSupport
- パラメータ:
key
- キー- 戻り値:
- リクエスト情報の文字列
- 関連項目:
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成, 6.7.2.0 (2017/01/16) valClm 追加, 6.7.3.0 (2017/01/27) tips 追加, 6.7.6.1 (2017/03/17) 値データを渡すようにします(isAttVal の追加対応)。, 6.7.8.0 (2017/04/21) valueMapParam関連, 6.8.0.1 (2017/06/30) str指定のキーワード, 6.9.2.0 (2018/03/05) reqAttUpClms 追加
-
getParameterRows
表示データの HybsSystem.ROW_SEL_KEY を元に、選ばれた 行を処理の対象とします。- オーバーライド:
getParameterRows
クラス内CommonTagSupport
- 戻り値:
- 選択行の配列
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- このメソッドは、nullを返しません
-
setParam
ValueMapParamTagで設定された各種パラメータ を受け取ります。- パラメータ:
pMap
- ValueMapParamTagで設定された各種パラメータ- 変更履歴:
- 6.7.8.0 (2017/04/21) ValueMapParamTag のパラメータを追加します。
-
setSelectedAll
【TAG】データを全件選択済みとして処理するかどうか[true/false]を指定します(初期値:false)。- パラメータ:
all
- 選択済み処理可否 [true:全件選択済み/false:通常]- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- 説明:
- 全てのデータを選択済みデータとして扱って処理します。 全件処理する場合に、(true/false)を指定します。 初期値は false です。
-
setTableId
【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します (初期値:HybsSystem#TBL_MDL_KEY[=])。- パラメータ:
id
- テーブルID (sessionに登録する時のID)- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- 説明:
- 検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 渡す場合に、通常は、session を利用します。その場合の登録キーです。 query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 この tableId 属性を利用して、メモリ空間を分けます。 (初期値:HybsSystem#TBL_MDL_KEY[=])。
-
setKeys
【TAG】パラメータ に登録するキーをセットします。- パラメータ:
key1
- 登録キー- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- 説明:
- keysが指定されない場合は、先頭カラムを使用します。
-
setValClm
【TAG】パラメータ から取り出す値カラムを指定ます。- パラメータ:
clm
- 取り出す値カラム- 変更履歴:
- 6.7.2.0 (2017/01/16) 新規作成
- 説明:
- valClmが指定されない場合は、2番目のカラムを使用します。
-
setNnClms
【TAG】パラメータが NULL の時に、設定しないカラム名を、CSV形式で指定します。- パラメータ:
clms
- NULL の時に、設定しないカラム名を、CSV形式で指定- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成, 6.7.2.0 (2017/01/16) 名称変更
- 説明:
- nnClms属性:この属性で指定された値が、nullの場合、{@XXXX} の解析を行いません。 正確に言うと、Mapに取り込みません。この場合、先のholdTag属性で指定したタグそのものも 出力しません。
-
setHoldTag
【TAG】値の前後を、挟むタグを指定します。- パラメータ:
tag
- 値の前後を挟むタグ- 関連項目:
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- 説明:
- holdTag属性:{@XXXX} を、指定のタグで囲います。 例えば、holdTag="span" とすると、<span class="YYYYの値" >XXXXの値</span> という文字列を作成します。 clsClms 属性や、{@XXXX cls="B"} を使用する場合は、holdTag 属性の指定が必要です。
-
setClsClms
【TAG】holdTagを使用するとき、そのタグの属性にclass属性を出力する場合のカラム名をCSV形式で指定します。- パラメータ:
clms
- class属性を出力する場合のカラム名を、CSV形式で指定- 関連項目:
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成, 6.7.2.0 (2017/01/16) 名称変更
- 説明:
- clsClms属性:先の指定のタグで囲う場合、そのタグのclass属性を指定できます。 複数指定した場合は、スペースで、連結します。 一括指定ではなく、個別に指定する場合は、{@XXXX cls="B"} 構文を使用します。 holdTag属性が設定されていない場合は、どちらも無視されます。
-
setTipsClms
【TAG】holdTagを使用するとき、そのタグの属性にtitle属性を出力する場合のカラム名をCSV形式で指定します。- パラメータ:
clms
- title属性を出力する場合のカラム名を、CSV形式で指定- 関連項目:
- 変更履歴:
- 6.7.3.0 (2017/01/16) 名称変更
- 説明:
- tipsClms属性:先の指定のタグで囲う場合、そのタグのtitle属性を指定できます。 複数指定した場合は、スペースで、連結します。 一括指定ではなく、個別に指定する場合は、{@XXXX tips="YYYY"} 構文を使用します。 holdTag属性が設定されていない場合は、どちらも無視されます。
-
setReqAttUpClms
【TAG】{@^XXXX}使用時に request.getAttribute() をセットすると同時に設定するカラム名をCSV形式で指定します。- パラメータ:
clms
- request.getAttribute()使用時に、同時に置き換えるカラム名を、CSV形式で指定- 変更履歴:
- 6.9.2.0 (2018/03/05) 新規作成
- 説明:
- DBTableModel と別に、value等で設定した値を、{@^XXXX} で置き換えますが、 その際、DBTableModel のデータも置き換えないと、表示とデータ(例えば、一覧表示やファイル出力時)が異なります。 また、置き換えるに当たって、他の項目(カラム)も置き換えないと、矛盾が生じる恐れがあります。 そこで、request.getAttribute() をセットする場合に、同時にセットするカラムを指定することで、 同時に値の書き換えを行います。 なお、値は、request.getAttribute() で取得します。
-
setSeparator
【TAG】キーとなるカラム名の値を連結する項目区切り文字をセットします(初期値:"_")。- パラメータ:
sepa
- 連結文字列 (初期値:"_")- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- 説明:
- keysで、複数のキーの値を連結して、Mapのキーにしますが、そのときの連結文字列を指定します。 初期値は、"_" に設定されています。
-
setXssCheck
【TAG】パラメータの HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=])。- パラメータ:
flag
- XSSチェック [true:する/false:しない]- 関連項目:
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- 説明:
- クロスサイトスクリプティング(XSS)対策の一環としてless/greater than signについてのチェックを行います。 (><) が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。 (初期値:システム定数のUSE_XSS_CHECK[=])。
-
toString
このオブジェクトの文字列表現を返します。 基本的にデバッグ目的に使用します。- オーバーライド:
toString
クラス内CommonTagSupport
- 戻り値:
- このクラスの文字列表現
- 変更履歴:
- 6.7.1.0 (2017/01/05) 新規作成
- このメソッドは、nullを返しません
-