クラス ValueMapTag

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

public class ValueMapTag extends CommonTagSupport
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,
  • コンストラクタの詳細

    • ValueMapTag

      public ValueMapTag()
      デフォルトコンストラクター
      変更履歴:
      6.7.1.0 (2017/01/05) 新規作成
  • メソッドの詳細

    • doStartTag

      public int doStartTag()
      Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
      定義:
      doStartTag インタフェース内 Tag
      オーバーライド:
      doStartTag クラス内 CommonTagSupport
      戻り値:
      後続処理の指示
      変更履歴:
      6.7.1.0 (2017/01/05) 新規作成
    • doAfterBody

      public int doAfterBody()
      Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
      定義:
      doAfterBody インタフェース内 IterationTag
      オーバーライド:
      doAfterBody クラス内 CommonTagSupport
      戻り値:
      後続処理の指示(SKIP_BODY)
      変更履歴:
      6.7.1.0 (2017/01/05) 新規作成
    • doEndTag

      public int doEndTag()
      Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
      定義:
      doEndTag インタフェース内 Tag
      オーバーライド:
      doEndTag クラス内 CommonTagSupport
      戻り値:
      後続処理の指示
      変更履歴:
      6.7.1.0 (2017/01/05) 新規作成
    • release2

      protected void 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

      protected String getRequestValue(String key)
      リクエスト情報の文字列を取得します。 これは、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

      protected int[] 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

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

      public void setTableId(String id)
      【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

      public void setKeys(String key1)
      【TAG】パラメータ に登録するキーをセットします。
      パラメータ:
      key1 - 登録キー
      変更履歴:
      6.7.1.0 (2017/01/05) 新規作成
      説明:
      keysが指定されない場合は、先頭カラムを使用します。
    • setValClm

      public void setValClm(String clm)
      【TAG】パラメータ から取り出す値カラムを指定ます。
      パラメータ:
      clm - 取り出す値カラム
      変更履歴:
      6.7.2.0 (2017/01/16) 新規作成
      説明:
      valClmが指定されない場合は、2番目のカラムを使用します。
    • setNnClms

      public void setNnClms(String clms)
      【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

      public void setHoldTag(String tag)
      【TAG】値の前後を、挟むタグを指定します。
      パラメータ:
      tag - 値の前後を挟むタグ
      関連項目:
      変更履歴:
      6.7.1.0 (2017/01/05) 新規作成
      説明:
      holdTag属性:{@XXXX} を、指定のタグで囲います。 例えば、holdTag="span" とすると、<span class="YYYYの値" >XXXXの値</span> という文字列を作成します。 clsClms 属性や、{@XXXX cls="B"} を使用する場合は、holdTag 属性の指定が必要です。
    • setClsClms

      public void setClsClms(String clms)
      【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

      public void setTipsClms(String clms)
      【TAG】holdTagを使用するとき、そのタグの属性にtitle属性を出力する場合のカラム名をCSV形式で指定します。
      パラメータ:
      clms - title属性を出力する場合のカラム名を、CSV形式で指定
      関連項目:
      変更履歴:
      6.7.3.0 (2017/01/16) 名称変更
      説明:
      tipsClms属性:先の指定のタグで囲う場合、そのタグのtitle属性を指定できます。 複数指定した場合は、スペースで、連結します。 一括指定ではなく、個別に指定する場合は、{@XXXX tips="YYYY"} 構文を使用します。 holdTag属性が設定されていない場合は、どちらも無視されます。
    • setReqAttUpClms

      public void setReqAttUpClms(String clms)
      【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

      public void setSeparator(String sepa)
      【TAG】キーとなるカラム名の値を連結する項目区切り文字をセットします(初期値:"_")。
      パラメータ:
      sepa - 連結文字列 (初期値:"_")
      変更履歴:
      6.7.1.0 (2017/01/05) 新規作成
      説明:
      keysで、複数のキーの値を連結して、Mapのキーにしますが、そのときの連結文字列を指定します。 初期値は、"_" に設定されています。
    • setXssCheck

      public void setXssCheck(String flag)
      【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

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