001/* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016package org.opengion.hayabusa.taglib; 017 018import java.util.ArrayList; 019import java.util.List; 020import java.util.Locale; 021import java.util.Map; 022import java.util.Set; // 6.4.3.4 (2016/03/11) 023import java.util.concurrent.ConcurrentMap; // 6.4.3.3 (2016/03/04) 024 025import org.opengion.fukurou.util.StringUtil; 026import org.opengion.fukurou.util.XHTMLTag; 027import org.opengion.fukurou.util.ToString; // 6.1.1.0 (2015/01/17) 028import org.opengion.fukurou.util.ArraySet; // 6.4.3.4 (2016/03/11) 029import org.opengion.hayabusa.common.HybsSystem; 030import org.opengion.hayabusa.common.HybsSystemException; 031import org.opengion.hayabusa.db.DBColumn; 032import org.opengion.hayabusa.db.DBColumnConfig; 033import org.opengion.hayabusa.db.DBEditConfig; 034import org.opengion.hayabusa.db.DBLastSql; 035import org.opengion.hayabusa.db.DBTableModel; 036import org.opengion.hayabusa.db.DBTableModelSorter; 037import org.opengion.hayabusa.html.FormatterType; 038import org.opengion.hayabusa.html.TableFormatter; 039import org.opengion.hayabusa.html.ViewCrossTableParam; 040import org.opengion.hayabusa.html.ViewForm; 041import org.opengion.hayabusa.html.ViewFormFactory; 042import org.opengion.hayabusa.html.ViewMarker; 043import org.opengion.hayabusa.resource.RoleMode; 044import org.opengion.hayabusa.resource.UserInfo; 045import org.opengion.hayabusa.resource.GUIInfo; 046 047import static org.opengion.fukurou.util.StringUtil.nval; 048 049/** 050 * データベースの検索結果を表示するタグです。 051 * 052 * 検索結果は、DBTableModel にセットされます。 053 * このタグに、データ(DBTableModel)と、 054 * コントローラ(ViewForm)を与えて、 外部からコントロールすることで、テキストフィールドやテーブルの形で表示したり、 055 * 入力可/不可、表示可/不可の設定を行うことができます。 056 * 057 * @og.formSample 058 * ●形式:<og:view /> 059 * <og:view 060 * viewFormType = "HTMLTable" 061 * command = "{@command}" 062 * startNo = "0" 063 * pageSize = "20" 064 * language = "ja" /> 065 * 066 * viewFormType : ViewFormオブジェクトを作成する時のキー(オプション) ViewFormFactory参照 067 * command : 処理コマンド ( PREV,NEXT,FIRST,LAST,VIEW )(オプション) 068 * startNo : データの書き始めの初期値を指定(オプション) 069 * pageSize : データのページ数(画面表示件数)を指定(オプション) 070 * language : ロケール(オプション) 071 * 072 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 073 * 074 * ●Tag定義: 075 * <og:view 076 * viewFormType 【TAG】ViewForm オブジェクトを作成するクラス({@og.doc03Link viewFormType ViewForm_**** クラス})を指定します 077 * command 【TAG】コマンド (PREV,NEXT,FIRST,LAST,NEW,RENEW,VIEW,REVIEW,RESET)をセットします 078 * scope 【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session) 079 * startNo 【TAG】表示データを作成する場合の表示の開始行番号をセットします 080 * pageSize 【TAG】表示データを作成する場合の1ページの行数をセットします 081 * pagePlus 【TAG】1ページの行数の増加分をセットします(初期値:0) 082 * writable 【TAG】行が書き込み可能かどうか[true/false]を設定します (初期値:DBTableModel#DEFAULT_WRITABLE[=true]) 083 * checked 【TAG】行のチェックボックスの初期値を設定するかどうか[true/false]を指定します(初期値:null) 084 * rowspan 【TAG】表示データを作成する場合のフォーマットの行数をセットします(初期値:2) 085 * skip 【TAG】NEXT等で、選択行以外をスキップするのかどうか[true/false]を指定します (初期値:ViewForm#DEFAULT_SKIP[=false]) 086 * columnWritable 【TAG】書き込み可能カラム名を、CSV形式で与えます 087 * noWritable 【TAG】書き込み不可カラム名を、CSV形式で与えます 088 * columnDisplay 【TAG】表示可能カラム名を、CSV形式で与えます 089 * clmSeqDisplay 【TAG】表示可能カラム名を、カラム順に、CSV形式で与えます 090 * noDisplay 【TAG】表示不可カラム名を、CSV形式で与えます 091 * columnGroup 【TAG】同一表示データをまとめる(表示しない)カラム名を、CSV形式で与えます 092 * noGroup 【TAG】同一表示データをまとめないカラム名を、CSV形式で与えます 093 * groupClass 【TAG】同一表示データをまとめる場合の、表示方法を指定します 094 * groupDir 【TAG】同一表示データをまとめる場合に、行(row)か列(column)を指定します(初期値:ROW) 095 * tableSorterKeys 【TAG】カラム名リンクソートを表示するカラム名を、CSV形式で与えます 096 * tableId 【TAG】(通常は使いません)sessionから所得する DBTableModelオブジェクトの ID 097 * viewFormId 【TAG】(通常は使いません)sessionから取得する ViewForm オブジェクトの ID 098 * viewLinkId 【TAG】(通常つかいません)requestから取得する ViewLink に対応する Attributes オブジェクトの ID 099 * viewMarkerId 【TAG】(通常は使いません)requestから取得する ViewMarker に対応する Attributes オブジェクトの ID 100 * editMarkerId 【TAG】(通常は使いません)requestから取得する EditMarker に対応する Attributes オブジェクトの ID 101 * selectedType 【TAG】表示時の選択用オブジェクトのタイプ[checkbox/radio/hidden/none]を指定します(初期値:checkbox) 102 * numberType 【TAG】表示時の行番号の表示方法[sequence/none/delete/skip=カラム名/view=カラム名]を指定します(初期値:sequence) 103 * optionTypeAttributes【TAG】テーブル等のチェックボックスに属性を付加します 104 * noMessage 【TAG】検索結果メッセージを表示しないかどうか[true/false]を設定します(初期値:false[表示する]) 105 * backLinkCount 【TAG】ページの先頭へのリンクの間隔をセットします (初期値:VIEW_BACK_LINK_COUNT[=0]) 106 * headerSkipCount 【TAG】ヘッダーを出力する間隔をセットします(初期値:システムパラメータ の VIEW_HEADER_SKIP_COUNT) 107 * useCheckControl 【TAG】チェックボックスの全チェックを選択するJavaScript の機能を使用するかどうかを指定します (初期値:1:全チェックを使用) 108 * useTableSorter 【TAG】ヘッダーにソート用リンクを作成するかどうか[true/false]を指定します (初期値:VIEW_USE_TABLE_SORTER[=true]) 109 * useParam 【TAG】パラメーターファイルの使用をするかどうか[true/false]を指定します(初期値:false) 110 * useConsistency 【TAG】Consistency キー による整合性チェックを行うかどうか[true/false]を指定します(初期値:true) 111 * bgColorCycle 【TAG】テーブルのバックグラウンドカラーの入れ替えのサイクルをセットします(初期値は、1:ゼブラ) 112 * bgColorClsClm 【TAG】テーブルのバックグラウンドカラーのクラスに指定するカラム名を指定します 113 * useScrollBar 【TAG】スクロールバー用のDIV要素を出力するかどうか[true/false]を指定します 114 (初期値:VIEW_USE_SCROLLBAR[={@og.value SystemData#VIEW_USE_SCROLLBAR}]) 115 * maxScrollBarSize 【TAG】ヘッダー固定のスクロールバー使用時の最大行数を指定します 116 (初期値:VIEW_SCROLLBAR_MAX_ROW_SIZE[={@og.value SystemData#VIEW_SCROLLBAR_MAX_ROW_SIZE}]) 117 * loadMarker 【TAG】viewLink や viewMarker の情報取り込みを制御する(初期値は、NEW,RENEW,REVIEW,RESET) 118 * useSelectedRow 【TAG】SEL_ROW機能[true:有効/false:無効]を指定します (初期値:VIEW_USE_SELECTED_ROW[=true]) 119 * useSelRowColor 【TAG】SEL_ROW使用時の選択行色変更[true:有効/false:無効]を指定します (初期値:VIEW_USE_SELROW_COLOR[=true]) 120 * useHilightRow 【TAG】HILIGHT_ROW機能[true:有効/false:無効]を指定します (初期値:VIEW_USE_HILIGHT_ROW[=true]) 121 * useAfterHtmlTag 【TAG】処理時間やページサイズなどの情報出力[true:有効/false:無効]を指定します(初期値:true) 122 * writableControl 【TAG】設定値に "_" が含まれている場合にレンデラーを使用するカラムをCSV形式で指定します 123 * popupReturnKeys 【TAG】ogPopup で検索結果の値を返すキーを、CSV形式で指定します 124 * clazz 【TAG】table要素に対して class 属性を設定します(初期値:viewTable) 125 * language 【TAG】タグ内部で使用する言語コード[ja/en/zh/…]を指定します 126 * height 【TAG】ビューの高さを指定します 127 * width 【TAG】ビューの幅を指定します 128 * fileDwnClms 【TAG】ファイルダウンロード時の抜出カラム名(CSV形式)を指定します 129 * skipNoEdit 【TAG】編集行のみを表示するかを指定します(初期値:false) 130 * noTransition 【TAG】(通常は使いません)画面遷移を行わない形式の登録方法を使用するかを指定します 131 * useHilightCheckOnly 【TAG】選択行ハイライトの制御をチェックボックスのみで有効にするかを指定します (初期値:VIEW_USE_HILIGHT_CHECK_ONLY[=false]) 132 * useHilightRadioClick【TAG】選択行ハイライトの制御でラジオのクリックイベントを発行するかどうかを指定します (初期値:VIEW_USE_HILIGHT_RADIO_CLICK[=true]) 133 * columnBulkSet 【TAG】一括入力カラムのアシスト機能を利用するカラム名を、CSV形式で与えます 134 * useTimeView 【TAG】処理時間を表示する TimeView を表示するかどうかを指定します 135 * (初期値:VIEW_USE_TIMEBAR[={@og.value SystemData#VIEW_USE_TIMEBAR}])。 136 * caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 137 * caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 138 * caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 139 * caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 140 * caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) 141 * mainView 【TAG】(通常は使いません)セッションに情報を登録するかどうか[true/false]指定します。(初期値:true) 142 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 143 * > ... Body ... 144 * </og:view> 145 * 146 * ●使用例 147 * <og:view viewFormId="HTMLTable" command="NEW" startNo="0" pageSize="5" / > 148 * 149 * @og.group 画面表示 150 * 151 * @version 4.0 152 * @author Kazuhiko Hasegawa 153 * @since JDK5.0, 154 */ 155public class ViewFormTag extends CommonTagSupport { 156 /** このプログラムのVERSION文字列を設定します。 {@value} */ 157 private static final String VERSION = "6.9.8.0 (2018/05/28)" ; 158 private static final long serialVersionUID = 698020180528L ; 159 160 /** command 引数に渡す事の出来る コマンド プレビュー {@value} */ 161 public static final String CMD_PREV = "PREV" ; 162 /** command 引数に渡す事の出来る コマンド ネクスト {@value} */ 163 public static final String CMD_NEXT = "NEXT" ; 164 /** command 引数に渡す事の出来る コマンド ファースト {@value} */ 165 public static final String CMD_FIRST = "FIRST"; 166 /** command 引数に渡す事の出来る コマンド ラスト {@value} */ 167 public static final String CMD_LAST = "LAST" ; 168 /** command 引数に渡す事の出来る コマンド 新規 {@value} */ 169 public static final String CMD_NEW = "NEW" ; 170 /** command 引数に渡す事の出来る コマンド 再検索 {@value} */ 171 public static final String CMD_RENEW = "RENEW" ; 172 /** command 引数に渡す事の出来る コマンド 表示 {@value} */ 173 public static final String CMD_VIEW = "VIEW" ; 174 /** command 引数に渡す事の出来る コマンド 再表示 {@value} */ 175 public static final String CMD_REVIEW = "REVIEW" ; 176 /** command 引数に渡す事の出来る コマンド リセット {@value} */ 177 public static final String CMD_RESET = "RESET" ; 178 179 // 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 180 private static final Set<String> COMMAND_SET = new ArraySet<>( CMD_PREV , CMD_NEXT , CMD_FIRST , CMD_LAST , CMD_NEW , CMD_RENEW , CMD_VIEW , CMD_REVIEW , CMD_RESET ); 181 182 // 3.8.0.8 (2005/10/03) 183 /** コマンドリストに存在しない場合の値 従来の CMD_VIEW と区別させるため。 */ 184 private static final String CMD_XXX = "XXX" ; 185 186 private static final String START_NO_KEY = "startNo"; 187 private static final String PAGE_SIZE_KEY = "pageSize"; 188 private static final String PAGE_PLUS_KEY = "pagePlus"; 189 190 private transient DBTableModel table ; 191 private transient ViewForm form ; 192 private transient List<TableFormatter> values; // 6.3.9.0 (2015/11/06) transient 追加 193 194 private String tableId = HybsSystem.TBL_MDL_KEY; 195 private String viewFormId = HybsSystem.VIEWFORM_KEY; 196 private String viewFormType ; 197 private String viewLinkId = HybsSystem.VIEWLINK_KEY; 198 private String viewMarkerId = HybsSystem.VIEW_MARK_KEY; 199 private String editMarkerId = HybsSystem.EDIT_MARK_KEY; // 3.8.6.1 (2006/10/20) 200 private String command ; 201 private int startNo = -1; // HTML画面上の表示開始位置(初期値) 202 private int tempStartNo = -1; // 再検索時の表示開始位置 203 private int pageSize = -1; // HTML画面上に表示する件数 204 private int pagePlus = -1; // 3.5.6.4 (2004/07/16) 205 private String columnWritable ; 206 private String noWritable ; 207 private String columnDisplay ; 208 private String noDisplay ; 209 private String clmSeqDisplay ; // 5.1.6.0 (2010/05/01) ViewForm_HTMLSeqClmTable 対応 210 private String columnGroup ; // 3.8.5.0 (2006/03/20) 211 private String noGroup ; // 5.1.8.0 (2010/07/01) 212 private String groupClass ; // 5.1.8.0 (2010/07/01) 213 private boolean groupDir ; // 6.7.3.0 (2017/01/27) false:ROW/true:COLUMN 214 private boolean noMessage ; 215 private String writable ; 216 private String checked ; 217 private boolean skip = ViewForm.DEFAULT_SKIP; 218 private String rowspan = "2"; 219 private String selectedType = "checkbox"; 220 private String numberType = "sequence"; // 3.5.1.0 (2003/10/03) 追加 221 private String optTypeAttri ; 222 private int backLinkCount = HybsSystem.sysInt( "VIEW_BACK_LINK_COUNT" ); 223 private int headerSkipCount = HybsSystem.sysInt( "VIEW_HEADER_SKIP_COUNT" ); // 0:通常ヘッダ、n:n回ごとに現れる 224 private String bodyString ; 225// private int useCheckControl = -1 ; 226 private int useCheckControl = 1 ; // 6.9.5.0 (2018/04/23) 初期値=1:全チェックを使用 227 private String useTableSorter ; // 3.5.4.7 (2004/02/06) 228 229 private long dyStart ; // 3.5.4.7 (2004/02/06) 実行時間測定用のDIV要素を出力します。 230 private boolean useTimeView = HybsSystem.sysBool( "VIEW_USE_TIMEBAR" ); // 6.3.6.0 (2015/08/16) 231 private boolean useParam ; // 3.5.4.8 (2004/02/23) パラメータTagの使用を宣言します。 232 /** 6.4.3.1 (2016/02/12) 作成元のMapを、HashMap から ConcurrentHashMap に置き換え。 */ 233 private ConcurrentMap<String,String> viewParam; // 6.4.3.3 (2016/03/04) 234 private List<String[]> viewArrayList; // 5.5.9.0 (2012/12/03) viewObjectから変更 235 236 private transient DBLastSql lastSql ; // 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 237 private transient DBEditConfig editConf ; // 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 238 239 // 3.5.5.8 (2004/05/20) 整合性チェックを行う為の、Consistency キー を出力するかどうかを指定します。 240 // 6.9.5.0 (2018/04/23) USE_CONSISTENCY 廃止(true固定) 241// private boolean useConsistency = HybsSystem.sysBool( "USE_CONSISTENCY" ) ; 242 private boolean useConsistency = true; // 6.9.5.0 (2018/04/23) 243 244 // 0(ゼブラなし)、-1(ワーニング)、-2以下(エラー)、1(ゼブラ)、2以上(行数まとめ) 245 private int bgColorCycle = 1 ; // 3.5.6.2 (2004/07/05) ゼブラ模様の指定を、ViewForm としてサポート 246 private String bgColorClsClm ; // 5.1.8.0 (2010/07/01) 行に対して、動的にクラス属性を付与するカラム名を指定します。 247 private String useScrollBar ; 248 private int maxScrollBarSize = HybsSystem.sysInt( "VIEW_SCROLLBAR_MAX_ROW_SIZE" ) ; // 6.2.4.0 (2015/05/15) 249 250 private String sortKeys ; // 3.6.0.0 (2004/09/17) カラムソートリンクを出すカラム名を指定。 251 252 // 3.6.0.4 (2004/10/14) viewLink や viewMarker の情報取り込みを制御 253 // 前後の , が重要です! 254 private String loadMarker = ",NEW,RENEW,REVIEW,RESET,"; 255 256 // 3.7.1.1 (2005/05/23) SEL_ROW機能の有効/無効を指定します。 257 private String useSelectedRow ; 258 259 // 3.7.1.1 (2005/05/31) SEL_ROW機能使用時に、BG_COLOR_ROWSEL の使用 有/無を指定します。 260 private String useSelRowColor ; 261 262 // 3.7.1.1 (2005/05/23) 処理時間やページサイズなどの情報出力の有効/無効を指定します。 263 private boolean useAfterHtmlTag = true ; 264 265 // 3.8.0.9 (2005/10/17) 設定値に "_" が含まれている場合に、レンデラーを使用します。 266 private String writableControl ; 267 268 // 3.8.6.0 (2006/09/29) HILIGHT_ROW機能の有効/無効を指定します。 269 private String useHilightRow ; 270 271 // 3.8.6.1 (2006/10/20) ogPopup で検索結果の値を返すキーを、CSV形式で指定します。 272 private String popupReturnKeys ; 273 274 // 4.0.0 (2007/04/16) tableタグを出力するときに付与します。 275 private String clazz = "viewTable"; 276 277 // 4.2.0.0 (2008/03/18) ビューの幅と高さを指定できるようにします。 278 private String height ; 279 private String width ; 280 281 // 4.3.0.0 (2008/07/04) fileUD ファイルダウンロード時の抜出カラム名(CSV形式) 282 private String fileDwnClms ; 283 284 private boolean skipNoEdit ; // 4.3.1.0 (2008/09/08) 285 private boolean noTransition ; // 4.3.3.0 (2008/10/01) 286 287 // 4.3.7.0 (2009/06/01) HILIGHT_ROW機能有効時に制御を行チェックボックスのみにします。 288 private String isHiRowCheckOnly; // 6.0.2.5 (2014/10/31) refactoring 289 // 6.2.2.0 (2015/03/27) hilightRow で、行選択時にイベント発行可否を指定できるようにする。 290 private String isHiRadioClick; 291 292 // 5.2.1.0 (2010/10/01) 一括入力カラムのアシスト機能を利用するカラムを指定します。 293 private String columnBulkSet ; 294 private boolean useDefBulkset = HybsSystem.sysBool( "VIEW_USE_DEFAULT_BULKSET" ) ; 295 296 // 5.7.6.1 (2014/05/09) startNoのセッション保存を指定します。 297 private boolean isMainView = true; 298 299 // 6.4.6.1 (2016/06/03) tableId 廃止(利用目的を明確にするため、パラメータ名をviewClassに変更) 300 private String viewClass ; // 今は、外部からの登録は行わない。 301 302 /** 303 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 304 * 305 * @og.rev 3.5.4.7 (2004/02/06) DBTableModelのソート機能 useTableSorter を追加 306 * @og.rev 3.5.4.7 (2004/02/06) 実行時間測定用に、開始時刻を取得します。 307 * @og.rev 3.5.4.8 (2004/02/23) useParam を、BODY部の処理判定に加えます。 308 * @og.rev 3.5.6.0 (2004/06/18) DBRowHeader のパッケージプライベート化に伴なう変更 309 * @og.rev 3.5.6.1 (2004/06/25) viewFormType変更時のviewForm 再セット 310 * @og.rev 3.5.6.2 (2004/07/05) command="VIEW" などで、ありえないとしていた処理を追加 311 * @og.rev 3.5.6.3 (2004/07/12) markerSet で table の整合性もチェックする。 312 * @og.rev 3.5.6.4 (2004/07/16) DBTableModelのソート時には、viewを初期設定する。 313 * @og.rev 3.6.0.0 (2004/09/17) scope が request の場合(検索)ヘッダーソートリンクは使えない。 314 * @og.rev 3.6.0.0 (2004/09/22) pageSize の form への設定見直し。 315 * @og.rev 3.6.0.0 (2004/09/25) viewLink , viewMarker のリクエストメモリ削除の中止 316 * @og.rev 3.6.0.4 (2004/10/14) viewLink や viewMarker の情報取り込みを制御する loadMarker を追加 317 * @og.rev 3.6.0.5 (2004/10/18) viewLink , viewMarker のリクエストメモリ削除を復活します。 318 * @og.rev 3.8.0.8 (2005/10/03) ヘッダーソート時に、startNo を 0 に戻します。 319 * @og.rev 3.8.8.5 (2007/03/09) markerSet する条件を強化する。 320 * @og.rev 3.8.8.9 (2007/05/29) ソート時のviewLink,viewMarker の取り込み 321 * @og.rev 3.8.9.3 (2007/08/28) soryKeysのみを指定した場合に、ソート用のテーブルモデルが作成されないバグを修正。 322 * @og.rev 4.1.0.0(2008/01/11)システムパラメータ(useCheckControl)の読取は doEndTag 関数から doStartTag 関数に移動します。 323 * @og.rev 5.1.6.0 (2010/05/01) ViewForm_HTMLSeqClmTable クラス によるカラム表示順処理を行います。 324 * @og.rev 5.1.6.0 (2010/05/01) 左右分割スクロール画面でヘッダースクロールが2回処理されるバグを修正 325 * @og.rev 5.1.6.0 (2010/05/01) ユーザー毎の画面項目並び替え対応 326 * @og.rev 5.1.7.0 (2010/06/01) ViewFormに画面IDをセットし、セットされた画面IDと同じ場合のみViewFormを復元する。 327 * @og.rev 5.1.7.0 (2010/06/01) DBColumnの{@XXXX}変数対応 328 * @og.rev 5.1.7.0 (2010/06/01) ヘッダーソート後に画面遷移し、戻ってきた際にstartNoがクリアされるバグを修正 329 * @og.rev 5.1.8.0 (2010/07/01) 全チェックを押した状態で画面遷移した場合にチェック状態を保持する。 330 * @og.rev 5.1.8.0 (2010/07/01) 同時設定不可(columnWritable,noWritable,columnDisplay,noDisplay,columnGroup,noGroup) チェック 331 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 332 * @og.rev 5.3.0.0 (2010/12/01) 左右分割スクロール(SplitViewTag)対応 333 * @og.rev 5.3.6.0 (2011/06/01) Edit機能見直し 334 * @og.rev 5.4.1.0 (2011/11/01) 5.1.8.0 (2010/07/01)の全チェック保持機能を廃止 335 * @og.rev 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 336 * @og.rev 6.0.3.0 (2014/11/13) Edit機能の超特殊処理 337 * @og.rev 6.2.0.0 (2015/02/27) PopupのBulkSet Off化にも使うので、HTMLSeqClmTable の条件は外す。 338 * @og.rev 6.2.5.0 (2015/06/05) Edit機能改善。viewLink,viewMarker の取り込みは、ソート時と、DBEditConfig 使用時とする。 339 * @og.rev 6.4.0.3 (2015/12/14) ヘッダーソート後のViewLinkが、旧のアドレスを指したままになっている不具合修正。 340 * @og.rev 6.4.6.1 (2016/06/03) tableId 廃止(利用目的を明確にするため、パラメータ名をviewClassに変更) 341 * @og.rev 6.9.5.0 (2018/04/23) VIEW_USE_CHECK_CONTROL 廃止 342 * 343 * @return 後続処理の指示 344 */ 345 @Override 346 public int doStartTag() { 347 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 348 if( !useTag() ) { return SKIP_BODY ; } // Body を評価しない 349 dyStart = System.currentTimeMillis(); 350 351 // 6.4.6.1 (2016/06/03) tableId 廃止(利用目的を明確にするため、パラメータ名をviewClassに変更) 352 // SplitViewTag を使う場合は、再設定されるので、初期設定をここで行っておく。 353 viewClass = "VIEW_" + tableId ; 354 355 // 5.3.0.0 (2010/12/01) 左右分割スクロール(SplitViewTag)対応 356 splitViewParamSet(); 357 358 // 5.1.8.0 (2010/07/01) 同時設定不可(columnWritable,noWritable,columnDisplay,noDisplay,columnGroup,noGroup) チェック 359 if( columnWritable != null && noWritable != null ) { 360 final String errMsg = "columnWritable と noWritable は同時に指定できません。" 361 + "columnWritable = [" + columnWritable 362 + "] , noWritable = [" + noWritable 363 + "]"; 364 throw new HybsSystemException( errMsg ); 365 } 366 367 if( columnDisplay != null && noDisplay != null ) { 368 final String errMsg = "columnDisplay と noDisplay は同時に指定できません。" 369 + "columnDisplay = [" + columnDisplay 370 + "] , noDisplay = [" + noDisplay 371 + "]"; 372 throw new HybsSystemException( errMsg ); 373 } 374 375 if( columnGroup != null && noGroup != null ) { 376 final String errMsg = "columnGroup と noGroup は同時に指定できません。" 377 + "columnGroup = [" + columnGroup 378 + "] , noGroup = [" + noGroup 379 + "]"; 380 throw new HybsSystemException( errMsg ); 381 } 382 383 table = (DBTableModel)getObject( tableId ); 384 if( table == null ) { return SKIP_BODY ; } 385 386 // 5.1.6.0 (2010/05/01)ViewForm_HTMLSeqClmTable クラス によるカラム表示順処理を行います。 387 // clmSeqDisplay 属性が設定されていると、クラス指定を変更し、columnDisplay に、clmSeqDisplay を 388 // 設定し、noDisplay を、削除(null をセット)します。 389 if( clmSeqDisplay != null ) { 390 viewFormType = "HTMLSeqClmTable" ; 391 } 392 393 // 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 394 final String guikey = getGUIInfoAttri( "KEY" ); 395 lastSql = (DBLastSql)getSessionAttribute( HybsSystem.DB_LAST_SQL_KEY ); 396 // ここではtableId,scope,項目名などで厳密にチェックを行います。 397 if( lastSql != null && lastSql.isGuiMatch( guikey ) && lastSql.isTableMatch( tableId, getScope() ) ) { 398 final String editName = getRequestValue( "editName" ); 399 if( editName != null ) { 400 editConf = getUser().getEditConfig( guikey, editName ); 401 if( editConf != null ) { 402 viewFormType = "HTMLSeqClmTable"; 403 } 404 } 405 } 406 407 // 5.1.7.0 (2010/06/01) DBColumnの{@XXXX}変数対応 408 final int clmSize = table.getColumnCount(); 409 for( int clmNo=0; clmNo<clmSize; clmNo++ ) { 410 final DBColumn dbColumn = table.getDBColumn( clmNo ); 411 if( dbColumn.isNeedsParamParse() ){ 412 final DBColumnConfig config = dbColumn.getConfig(); 413 config.setRendererParam( getRequestParameter( config.getRendererParam() ) ); 414 config.setEditorParam( getRequestParameter( config.getEditorParam() ) ); 415 final DBColumn newColumn = new DBColumn( config ); 416 table.setDBColumn( clmNo, newColumn ); 417 } 418 } 419 420 // 3.8.8.9 (2007/05/29) ソート時の viewLink,viewMarker の取り込み 421 // 実際は、Formオブジェクトが変わった時も取り込む必要があるが、過去のソースとの関係で、今回は見送る。 422 boolean useSorter = false; 423 424 // 3.5.4.7 (2004/02/06) DBTableModelのソート機能 追加 425 // 登録後に同じソート順で再表示させるために、リクエストキャッシュに登録します。 426 // 3.8.9.3 (2007/08/28) soryKeysのみを指定した場合に、ソート用のテーブルモデルが作成されないバグを修正。 427 // 5.1.6.0 (2010/05/01) 左右分割スクロール画面でヘッダースクロールが2回処理されるバグを修正 428 if( "session".equals( getScope() ) 429 && ( nval( useTableSorter,sysBool( "VIEW_USE_TABLE_SORTER" ) ) || sortKeys != null ) 430 && !( table.getConsistencyKey().equals( getRequestAttribute( HybsSystem.VIEW_SORT_KEY ) ) ) ) { 431 432 final String clm = getRequestValue( HybsSystem.SORT_COLUMNS ); 433 // 若干トリッキー。初めてクリックされるまで、DBTableModelSorter は作成しない。 434 if( clm != null && clm.length() > 0 ) { 435 useSorter = true; // 3.8.8.9 (2007/05/29) 436 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19) 437 final int clmNo = table.getColumnNo( clm ); 438 boolean sortAscending = nval( getRequestValue( HybsSystem.SORT_ASCENDING ),true ); 439 if( table instanceof DBTableModelSorter ) { 440 if( !CMD_RESET.equals( command ) ) { 441 ((DBTableModelSorter)table).sortByColumn( clmNo ); 442 } 443 sortAscending = ((DBTableModelSorter)table).isAscending() ; // ソート方向 444 } 445 else { 446 final DBTableModelSorter temp = new DBTableModelSorter(); 447 temp.setModel( table ); 448 temp.sortByColumn( clmNo,sortAscending ); 449 table = temp; 450 } 451 // 3.6.0.8 (2004/11/19) トランザクションチェックを行います。 452 if( ! commitTableObject( tableId, table ) ) { 453 jspPrint( "ViewFormTag " + getResource().getLabel( "ERR0041" ) ); // 5.8.8.0 (2015/06/05) 454 return SKIP_PAGE; 455 } 456 if( CMD_VIEW.equals( command ) ) { 457 setRequestCacheData( HybsSystem.SORT_COLUMNS,clm ); 458 setRequestCacheData( HybsSystem.SORT_ASCENDING,String.valueOf( sortAscending ) ); 459 } 460 461 // 5.1.6.0 (2010/05/01) 462 setRequestAttribute( HybsSystem.VIEW_SORT_KEY, table.getConsistencyKey() ); 463 464 // 3.8.0.8 (2005/10/03) ヘッダーソート時に、startNo を 0 に戻します。 465 // 5.1.7.0 (2010/06/01) ヘッダーソート後に画面遷移し、戻ってきた際にstartNoがクリアされるバグを修正 466 if( !CMD_RENEW.equals( command ) ) { 467 startNo = 0; 468 tempStartNo = startNo; 469 } 470 } 471 } 472 473 if( CMD_NEW.equals( command ) || CMD_RENEW.equals( command ) || CMD_REVIEW.equals( command ) || CMD_RESET.equals( command ) ) { 474 form = ViewFormFactory.newInstance( viewFormType ); // 3.5.6.1 (2004/06/25) 475 form.init( table ); 476 table.setDefaultRowWritable( DBTableModel.DEFAULT_WRITABLE ); 477 table.setDefaultRowChecked( DBTableModel.DEFAULT_CHECKED ); 478 } 479 else { 480 // 3.5.6.1 (2004/06/25) viewFormType変更時のviewForm 再セット 481 final ViewForm oldForm = (ViewForm)getObject( viewFormId ); 482 // 5.1.7.0 (2010/06/01) ViewFormに画面IDをセットし、セットされた画面IDと同じ場合のみViewFormを復元する。 483 if( oldForm != null && guikey.equals( oldForm.getGamenId() ) ) { // 6.0.2.4 (2014/10/17) 484 // 6.2.5.0 (2015/06/05) USE_EDIT_WITH_VIEW_CHANGE で、切り替え処理を行う。 485 final String oldFormType = oldForm.getViewFormType(); 486 if( "HTMLSeqClmTable".equals( oldFormType ) && HybsSystem.sysBool( "USE_EDIT_WITH_VIEW_CHANGE" ) ) { 487 viewFormType = "HTMLSeqClmTable" ; 488 } 489 490 // 6.4.0.3 (2015/12/14) ヘッダーソート後のViewLinkが、旧のアドレスを指したままになっている不具合修正。 491 492 if( oldFormType != null && oldFormType.equals( viewFormType ) ) { 493 form = oldForm ; 494 } 495 else { 496 form = ViewFormFactory.newInstance( viewFormType ); 497 } 498 499 // 6.2.5.0 (2015/06/05) form が切り替わった時のみ、markerSet する。 500 form.init( table ); 501 // 3.5.6.3 (2004/07/12) markerSet で table の整合性もチェックする。 502 final DBTableModel oldTable = oldForm.getDBTableModel(); 503 if( table.getConsistencyKey().equals( oldTable.getConsistencyKey() ) ) { 504 // 3.8.8.5 (2007/03/09) markerSet する条件を強化する。 505 // 3.8.8.9 (2007/05/29) ソート時の viewLink,viewMarker の取り込み 506 // 6.2.5.0 (2015/06/05) viewLink,viewMarker の取り込みは、ソート時と、DBEditConfig 使用時とする。 507 if( "true".equalsIgnoreCase( loadMarker ) || 508 loadMarker.indexOf( "," + command + "," ) >= 0 || 509 "HTMLSeqClmTable".equals( viewFormType ) || // 6.2.5.0 (2015/06/05) 510 "HTMLSeqClmTable".equals( oldFormType ) || // 6.2.5.0 (2015/06/05) 511 useSorter ) { 512 form.markerSet( oldForm ); 513 } 514 } 515 } 516 else { 517 // 3.5.6.2 (2004/07/05) command="VIEW" などで、ありえないとしていた処理を追加 518 form = ViewFormFactory.newInstance( viewFormType ); 519 form.init( table ); 520 } 521 } 522 523 // 5.1.7.0 (2010/06/01) ViewFormに画面IDをセットし、セットされた画面IDと同じ場合のみViewFormを復元する。 524 form.setGamenId( guikey ); // 6.0.2.4 (2014/10/17) 525 526 // 3.6.0.4 (2004/10/14) ViewMarker 等のセットは、loadMarker で制御します。 527 if( "true".equalsIgnoreCase( loadMarker ) || loadMarker.indexOf( "," + command + "," ) >= 0 ) { 528 final ViewMarker viewLink = (ViewMarker)getRequestAttribute( viewLinkId ); 529 if( viewLink != null ) { 530 form.setViewLink( viewLink ); 531 removeRequestAttribute( viewLinkId ); // 3.6.0.5 (2004/10/18) 復活 532 } 533 534 final ViewMarker viewMarker = (ViewMarker)getRequestAttribute( viewMarkerId ); 535 if( viewMarker != null ) { 536 form.setViewMarker( viewMarker ); 537 removeRequestAttribute( viewMarkerId ); // 3.6.0.5 (2004/10/18) 復活 538 } 539 540 // 3.8.6.1 (2006/10/24) editMarker を追加する。 541 // 6.2.0.0 (2015/02/27) Popup(isRenderer=false のviewMarker)のBulkSet Off化対応 542 final ViewMarker editMarker = (ViewMarker)getRequestAttribute( editMarkerId ); 543 if( editMarker != null ) { 544 form.setEditMarker( editMarker ); 545 removeRequestAttribute( editMarkerId ); 546 // 6.0.3.0 (2014/11/13) Edit機能の超特殊処理 547 // editMarkerのカラムは非表示設定する必要がある。 548 // 6.2.0.0 (2015/02/27) PopupのBulkSet Off化にも使うので、HTMLSeqClmTable の条件は外す。 549 // 6.2.5.0 (2015/06/05) Edit機能でも、条件によっては、書き込み許可するので、特殊処理廃止 550 } 551 } 552 // 3.8.0.5 (2005/08/26) false の場合は、無条件に、form のviewLinkとViewMarkerをクリアします。 553 if( "false".equalsIgnoreCase( loadMarker ) ) { 554 form.setViewLink( null ); 555 form.setViewMarker( null ); 556 form.setEditMarker( null ); // 3.8.6.1 (2006/10/24) 557 } 558// // 4.1.0.0(2008/01/11)システムパラメータ(useCheckControl)の読取は doEndTag 関数から doStartTag 関数に移動します。 559// // 6.9.5.0 (2018/04/23) VIEW_USE_CHECK_CONTROL 廃止 560// if( useCheckControl < 0 ) { 561// useCheckControl = intCase( sys( "VIEW_USE_CHECK_CONTROL" ) ) ; 562// } 563 setTableRowWritable( table ); 564 565 setDefaultParameter(); 566 567 // if( pagePlus != 0 ) { ※ なぜ != だったのか謎。pagePlusがマイナス時は? 568 if( pagePlus > 0 ) { 569 form.setPageSize( pageSize + pagePlus ); 570 } 571 else { 572 form.setPageSize( pageSize ); // 3.6.0.0 (2004/09/22) 追加 573 } 574 575 // 3.5.4.8 (2004/02/23) 576 // 6.4.1.1 (2016/01/16) PMD refactoring. A method should have only one exit point, and that should be the last statement in the method 577 return form.canUseFormat() || useParam ? EVAL_BODY_BUFFERED : SKIP_BODY ; 578 579 } 580 581 /** 582 * Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。 583 * 584 * @og.rev 3.1.1.0 (2003/03/28) ボディの内容を取得する処理を、CommonTagSupport で行vう。 585 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。ボディが存在する場合のみボディが呼ばれる対応。 586 * @og.rev 3.5.4.0 (2003/11/25) 外部からフォーマットが指定されない場合は、内部のフォーマットを登録する。 587 * @og.rev 5.1.7.0 (2010/06/01) フォーマットの{@XXXX}の値に[が含まれる場合は、サイニタイズ("\\]\\"に変換)する。 588 * 589 * @return 後続処理の指示(SKIP_BODY) 590 */ 591 @Override 592 public int doAfterBody() { 593 bodyString = getSanitizedBodyString(); 594 return SKIP_BODY ; 595 } 596 597 /** 598 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 599 * 600 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 601 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 602 * @og.rev 3.5.0.0 (2003/03/28) noClass 属性の追加。および、ロジック整理。 603 * @og.rev 3.5.1.0 (2003/10/03) numberType 属性の追加 604 * @og.rev 3.5.2.0 (2003/10/20) headerSkipCount属性を追加 605 * @og.rev 3.5.2.0 (2003/10/20) form が null の場合の条件分岐を追加 606 * @og.rev 3.5.3.1 (2003/10/31) Table系のViewで、skip属性を使用する。 607 * @og.rev 3.5.4.0 (2003/11/25) command="RESET"時に、戻った画面のpageSize がクリアされてしまう対応。 608 * @og.rev 3.5.4.0 (2003/11/25) フォーマット文字列を、TableFormatter オブジェクトを使用するように変更。 609 * @og.rev 3.5.4.1 (2003/12/01) startNo を隠しフィールドに持つ処理を廃止。(キャッシュを使用) 610 * @og.rev 3.5.4.3 (2004/01/05) useCheckControl属性を追加 611 * @og.rev 3.5.4.7 (2004/02/06) DBTableModelのソート機能 useTableSorter を追加 612 * @og.rev 3.5.4.7 (2004/02/06) makeStartNoKeyメソッドの廃止(setRequestCacheDataを利用) 613 * @og.rev 3.5.4.7 (2004/02/06) 実行時間測定用のDIV要素を出力しておきます。 614 * @og.rev 3.5.4.8 (2004/02/23) ViewParamTag のパラメータを追加します。 615 * @og.rev 3.5.5.5 (2004/04/23) DBTableModel の整合性パラメータを hidden で出力します。 616 * @og.rev 3.5.5.8 (2004/05/20) makeConsistencyKey メソッドに処理ロジックを移します。 617 * @og.rev 3.5.6.2 (2004/07/05) bgColorCycle 変数の追加。 618 * @og.rev 3.5.6.4 (2004/07/16) スクロールバー用のDIV要素の出力(開始) 619 * @og.rev 3.6.0.0 (2004/09/17) カラムソートリンクを出すカラム名を指定。 620 * @og.rev 3.6.0.0 (2004/09/22) pageSize の hidden 出力は、初期設定値とします。 621 * @og.rev 3.7.0.3 (2005/03/01) 指定の行番号まで画面をスクロールさせる機能を追加。 622 * @og.rev 3.7.1.1 (2005/05/23) 処理時間やページサイズなどの情報出力の有効/無効を指定します。 623 * @og.rev 3.8.0.3 (2005/07/15) ヘッダー固定のスクロールタイプをセットします。 624 * @og.rev 3.8.0.9 (2005/10/17) writableControl 属性を追加します。 625 * @og.rev 3.8.6.0 (2006/09/29) useHilightRow 属性を追加します。 626 * @og.rev 3.8.6.1 (2006/10/20) ポップアップで値を返すカラム文字列(CSV形式) 627 * @og.rev 4.0.0.0 (2007/11/27) ヘッダーカラムのエディター、レンデラー適用対応 628 * @og.rev 4.1.2.0 (2008/03/12) columnWritable,noWritable に、"null" を指定可能とする。 629 * @og.rev 4.2.0.0 (2008/03/18) ビューの高さ、幅の指定を可能にします。 630 * @og.rev 4.2.1.0 (2008/04/11) null チェック方法変更 631 * @og.rev 4.3.0.0 (2008/07/04) ロールモードによる設定 632 * @og.rev 4.3.0.0 (2008/07/04) fileUD 対応。抜き出すカラムを指定します。 633 * @og.rev 4.3.1.0 (2008/09/08) canUseFormatのエラーハンドリングは各サブクラスで行う。editOnly属性対応。 634 * @og.rev 4.3.3.0 (2008/10/01) noTransition 属性を追加します。 635 * @og.rev 4.3.6.0 (2009/04/01) eventColumn対応 636 * @og.rev 4.3.7.0 (2009/06/01) 行ハイライト機能でチェックボックスでのみON/OFFができるオプションを追加 637 * @og.rev 4.3.8.0 (2009/08/01) noTransition値取得メソッド名変更 638 * @og.rev 5.1.3.0 (2010/02/01) noTransitionのコントロールは、requestで行う。 639 * @og.rev 5.1.6.0 (2010/05/01) fileDwnClmsが指定されない場合は、Viewで表示されたカラムをセット 640 * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 641 * @og.rev 5.1.7.0 (2010/06/01) HilightRow用のDivは必ず出す(画面遷移なし登録(JavaScript)の正規表現でマッチさせるため)) 642 * @og.rev 5.1.8.0 (2010/07/01) form.setNoGroup( noGroup ) , form.setGroupClass( groupClass ) 追加 643 * @og.rev 5.1.8.0 (2010/07/01) form.setBgColorClsClm( bgColorClsClm ) 追加 644 * @og.rev 5.1.8.0 (2010/07/01) Divを必ず出すのは、画面遷移なし登録の場合のみとする(CustomData対応) 645 * @og.rev 5.2.1.0 (2010/10/01) 一括入力カラムのアシスト機能を利用するカラムを指定します。(columnBulkSet) 646 * @og.rev 5.2.2.0 (2010/11/01) useHeaderColumn 属性を、ViewCrossTableParam.USE_HEADER_COLUMN をキーに、取得する 647 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 648 * @og.rev 5.5.8.3 (2012/11/17) viewObject追加 649 * @og.rev 5.5.9.0 (2012/12/03) viewObjectをviewArrayListに変更 650 * @og.rev 5.7.6.1 (2014/05/09) mainView対応 651 * @og.rev 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 652 * @og.rev 6.0.3.0 (2014/11/13) Edit機能の超特殊処理 653 * @og.rev 6.2.2.0 (2015/03/27) hilightRow で、行選択時にイベント発行可否を指定できるようにする。 654 * @og.rev 6.2.5.0 (2015/06/05) Edit機能改善。条件によっては、書き込み許可するので、特殊処理廃止 655 * @og.rev 5.9.5.3 (2016/02/25) formにtableIdを渡す 656 * @og.rev 6.4.6.1 (2016/06/03) tableId 廃止(利用目的を明確にするため、パラメータ名をviewClassに変更) 657 * @og.rev 6.6.0.0 (2016/12/01) maxScrollBarSize が適用された場合に、メッセージを表示します。 658 * @og.rev 6.7.3.0 (2017/01/27) groupDir追加 659 * 660 * @return 後続処理の指示 661 */ 662 @Override 663 public int doEndTag() { 664 debugPrint(); // 4.0.0 (2005/02/28) 665 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 666 if( !useTag() ) { return EVAL_PAGE ; } 667 668 // noTransition = isNoTransitionRequest() || noTransition; // 4.3.3.0 (2008/10/01) 追加 669 noTransition = isNoTransitionRequest(); // 5.1.3.0 (2010/02/01) 670 if( form == null ) { return EVAL_PAGE ; } // 3.5.2.0 (2003/10/20) 671 if( form.canUseFormat() ) { 672 if( values == null && bodyString != null && !useParam ) { 673 final TableFormatter format = new TableFormatter(); 674 format.setFormatType( FormatterType.TYPE_HEAD ); 675 format.setFormat( bodyString ); 676 format.setRowspan( rowspan ); 677 values = new ArrayList<>(); 678 values.add( format ); 679 form.setFormatterList( values ); 680 } 681 else if( values != null ) { 682 form.setFormatterList( values ); 683 } 684 } 685 686 if( table != null ) { 687 // 4.2.0.0 (2008/03/18) ビューの高さ、幅を指定する。null回避はAbstractViewFormで行う 688 form.setHeight( height ); 689 form.setWidth( width ); 690 691 form.setColumnWritable( columnWritable ); 692 form.setNoWritable( noWritable ); 693 form.setColumnDisplay( columnDisplay ); 694 form.setNoDisplay( noDisplay ); 695 form.setColumnGroup( columnGroup ); // 3.8.5.0 (2006/03/20) 696 form.setNoGroup( noGroup ); // 5.1.8.0 (2010/07/01) 追加 697 form.setGroupClass( groupClass ); // 5.1.8.0 (2010/07/01) 追加 698 form.setGroupDir( groupDir ); // 6.7.3.0 (2017/01/27) 追加 699 form.setTableSorterKeys( sortKeys ); // 3.6.0.0 (2004/09/17) 追加 700 form.setNoMessage( noMessage ); 701 form.setSelectedType( selectedType ); 702 form.setUseCheckControl( useCheckControl ); // 3.5.4.3 (2004/01/05) 追加 703 form.setNumberType( numberType ); // 3.5.1.0 (2003/10/03) 追加 704 form.setOptionTypeAttributes( optTypeAttri ); 705 form.setBackLinkCount( backLinkCount ); 706 form.setHeaderSkipCount( headerSkipCount ); // 3.5.2.0 (2003/10/20) 追加 707 if( useParam ) { 708 form.setParam( viewParam ); // 3.5.4.8 (2004/02/23) 709 form.setViewArrayList( viewArrayList ); // 5.5.9.0 (2012/12/03) 710 } 711 form.setBgColorCycle( bgColorCycle ); // 3.5.6.2 (2004/07/05) 追加 712 form.setBgColorClsClm( bgColorClsClm ); // 5.1.8.0 (2010/07/01) 追加 713 form.setWritableControl( writableControl ); // 3.8.0.9 (2005/10/17) 追加 714 715 // 5.2.1.0 (2010/10/01) 初期バルクセットが true で、かつ、変数が未設定の場合は、全カラム(*)選択とする。 716 if( useDefBulkset && columnBulkSet == null ) { columnBulkSet = "*"; } 717 // selectedType が radio の場合は、カラムの設定を行わない。 718 if( "radio".equalsIgnoreCase( selectedType ) ) { columnBulkSet = null; } 719 form.setColumnBulkSet( columnBulkSet ); // 5.2.1.0 (2010/10/01) 追加 720 721 // 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 722 // editConf が null でないという事は、lastSql の条件がクリアされている。 723 if( editConf != null ) { 724 // 6.0.3.0 (2014/11/13) Edit機能の超特殊処理 725 // setColumnDisplay(String) の後でないと、リセットされてしまう。 726 // 6.2.5.0 (2015/06/05) Edit機能でも、条件によっては、書き込み許可するので、特殊処理廃止 727 // if( editMarkerClmNos != null ) { 728 // for( int i=0; i<editMarkerClmNos.length; i++ ) { 729 // form.setColumnDisplay( editMarkerClmNos[i] , false ); // 表示しない 730 // } 731 // } 732 733 final String orgClms = form.getViewClms(); // form.setColumnDisplay(String) の再セット前に取り出す。 734 lastSql.setOrgClmNames( orgClms ); 735 final String userViewClms = editConf.getViewClms( orgClms ); 736 makeEditTable( userViewClms ); // ここで、clmSeqDisplay を再セットしている。 737 } 738 739 // 6.0.2.4 (2014/10/17) makeEditTable メソッドで、clmSeqDisplay を再セットしている。 740 if( clmSeqDisplay != null ) { 741 form.setColumnDisplay( clmSeqDisplay ); // noDisplay は無視されます。 742 } 743 744 // 3.6.0.0 (2004/09/22) pageSize の hidden 出力は、初期設定値とします。 745 final int oldPageSize = pageSize; 746 pageSize = form.getPageSize(); 747 commandExec( command ); 748 749 form.setStartNo( startNo ); 750 form.setSkip( skip ); // 3.5.3.1 (2003/10/31) 751 form.setSkipNoEdit( skipNoEdit ); // 4.3.1.0 (2008/09/08) 752 final boolean useTblSorter = "session".equals( getScope() ) && 753 nval( useTableSorter,sysBool( "VIEW_USE_TABLE_SORTER" ) ); 754 form.setUseTableSorter( useTblSorter ); // 3.5.4.7 (2004/02/06) 755 756 // 3.6.0.0 (2004/09/17) 757 // tableSorter 時のリンクに追加するリクエスト変数のキャッシュMapを追加する。 758 if( useTblSorter || sortKeys != null ) { 759 // 4.0.0 (2005/01/31) 760 final String memKey = HybsSystem.REQ_CACHE_KEY + getGUIInfoAttri( "KEY" ); 761 final Map<?,?> mem = (Map<?,?>)getSessionAttribute( memKey ); // 4.3.3.6 (2008/11/15) Generics警告対応 762 form.makeTableSorterQuery( mem ); 763 } 764 765 // 3.5.6.4 (2004/07/16) スクロールバー用のDIV要素の出力(開始) 766 // 3.8.0.3 (2005/07/15) ヘッダー固定のスクロールタイプをセットします。 767 // 4.0.0.0 (2007/04/10) ヘッダー固定のスクロールタイプは、一つにする。 768 769 // 6.2.4.0 (2015/05/15) maxScrollBarSize 追加 770 771 // 6.6.0.0 (2016/12/01) maxScrollBarSize が適用された場合に、メッセージを表示します。 772 final boolean useScBar = nval( useScrollBar,sysBool( "VIEW_USE_SCROLLBAR" ) ); 773 final boolean inRange = Math.min( pageSize,table.getRowCount() ) < maxScrollBarSize ; 774 form.setUseScrollBar( useScBar && inRange ); 775 776 if( useScBar && !inRange ) { // ヘッダー固定を使用するが、範囲外なので、使用しない。 777 jspPrint( getResource().getLabel( "MSG0091" , String.valueOf( maxScrollBarSize ) ) ); 778 } 779 780 // 3.8.6.1 (2006/10/20) ポップアップで値を返すカラム文字列(CSV形式) 781 form.setPopupReturnKeys( popupReturnKeys ); 782 form.setTableClass( clazz ); // 4.0.0 (2007/04/16) 783 784 // 3.7.0.3 (2005/03/01) 指定の行番号まで画面をスクロールさせる機能を追加。{I} は無視する。 785 final String rowval = nval( getRequestValue( "SEL_ROW" ),null ) ; 786 787 final boolean useSelRow = nval( useSelectedRow,sysBool( "VIEW_USE_SELECTED_ROW" ) ); 788 if( useSelRow && rowval != null && !rowval.equalsIgnoreCase( "{I}" ) ) { 789 final boolean useSelRowClr = nval( useSelRowColor,sysBool( "VIEW_USE_SELROW_COLOR" ) ) ; 790 form.setScrollRowNo( Integer.parseInt( rowval ),useSelRowClr ); 791 } 792 793 // 4.0.0 (2005/11/30) カラムロールを判定して、アクセス不可の場合は表示させないようにする。 794 final int clmSize = table.getColumnCount(); 795 final UserInfo userInfo = getUser(); 796 for( int clmNo=0; clmNo<clmSize; clmNo++ ) { 797 final DBColumn dbColumn = table.getDBColumn( clmNo ); 798 799 // 4.3.6.0 (2009/04/01) セッションに生SQLを登録 800 // 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 801 final String evCol = dbColumn.getEventColumn(); 802 if( evCol != null && evCol.length() > 0 ){ 803 addEventColumn( dbColumn ); 804 } 805 806 // 4.3.0.0 (2008/07/04) ロールモードによる設定 807 final byte bitMode = userInfo.getAccessBitMode( dbColumn.getRoleMode() ); 808 // アクセス不許可の場合のみ、セットする。 809 // それ以外は、columnDisplay ,noDisplay 属性が適用されている。 810 if( !RoleMode.isRead( bitMode ) ) { 811 form.setColumnDisplay( clmNo,false ); 812 } 813 // 書込み不許可の場合のみ、セットする。 814 // それ以外は、columnWritable ,noWritable 属性が適用されている。 815 if( !RoleMode.isWrite( bitMode ) ) { 816 form.setColumnWritable( clmNo,false ); 817 } 818 } 819 820 // 3.8.6.0 (2006/09/29) useHilightRow 属性追加 821 final boolean useHiRow = nval( useHilightRow,sysBool( "VIEW_USE_HILIGHT_ROW" ) ); 822 // 5.1.7.0 (2010/06/01) HilightRow用のDivは必ず出す(画面遷移なし登録(JavaScript)の正規表現でマッチさせるため)) 823 // 5.1.8.0 (2010/07/01) Divを必ず出すのは、画面遷移なし登録の場合のみとする(CustomData対応) 824 if( useHiRow || noTransition ) { 825 jspPrint( "<div id=\"divHlr\"" ); 826 if( useHiRow ) { 827 // 4.3.7.0 (2009/06/01) 6.0.2.5 (2014/10/31) refactoring 828 final boolean useHiCkOnly = nval( isHiRowCheckOnly ,sysBool( "VIEW_USE_HILIGHT_CHECK_ONLY" ) ); 829 // 6.2.2.0 (2015/03/27) hilightRow で、行選択時にイベント発行可否を指定できるようにする。 830 final boolean useRdoClick = nval( isHiRadioClick ,sysBool( "VIEW_USE_HILIGHT_RADIO_CLICK" ) ); 831 jspPrint( " onclick=\"hilightRow( event, " + useHiCkOnly + "," + useRdoClick + ");\"" ); 832 } 833 jspPrint( ">" ); 834 } 835 836 // 5.2.2.0 (2010/11/01) useHeaderColumn 属性を、ViewCrossTableParam.USE_HEADER_COLUMN をキーに、取得する 837 if( viewParam != null && 838 "true".equalsIgnoreCase( viewParam.get( ViewCrossTableParam.USE_HEADER_COLUMN ) ) ) { 839 form.setResourceManager( getResource() ); 840 } 841 842 form.setNoTransition( noTransition ); // 4.3.3.0 (2008/10/01) 追加 843 844 // 6.4.6.1 (2016/06/03) tableId 廃止(利用目的を明確にするため、パラメータ名をviewClassに変更) 845 form.setViewClass( viewClass ); // 6.4.6.1 (2016/06/03) 846 847 jspPrint( form.create( startNo,pageSize ) ); 848 849 // 5.1.8.0 (2010/07/01) Divを必ず出すのは、画面遷移なし登録の場合のみとする(CustomData対応) 850 if( useHiRow || noTransition ) { 851 jspPrint( "</div>" ); 852 } 853 854 // 5.7.6.1 (2014/05/09) mainView時のみstartNoを登録する 855 if( isMainView ){ 856 setRequestCacheData( START_NO_KEY,String.valueOf( tempStartNo ) ); // 3.5.4.7 (2004/02/06) 857 } 858 859 // 3.6.0.0 (2004/09/22) pageSize の hidden 出力は、初期設定値とします。 860 if( useAfterHtmlTag ) { // 3.7.1.1 (2005/05/23) 861 jspPrint( makePageSize( oldPageSize ) ); // 3.6.0.0 (2004/09/22) 862 } 863 864 makeConsistencyKey(); // 3.5.5.8 (2004/05/20) 865 866 setObject( viewFormId, form ); 867 868 // 3.5.4.8 (2004/02/23) 超特殊処理 DBTableModel を View で置き換えます。 869 // 5.2.2.0 (2010/11/01) saveTableId 属性を、ViewCrossTableParam.SAVE_SCOPE_KEY をキーに、取得する 870 if( viewParam != null ) { 871 final String saveTableId = viewParam.get( ViewCrossTableParam.SAVE_TABLEID_KEY ); // 5.2.2.0 (2010/11/01) 872 if( saveTableId != null ) { 873 final String saveScope = viewParam.get( ViewCrossTableParam.SAVE_SCOPE_KEY ); 874 setObject( saveTableId, form.getDBTableModel() , saveScope ); 875 } 876 } 877 878 // 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 879 // 5.1.6.0 (2010/05/01) Viewで表示した項目をDBLastSqlにセットします。 880 if( table.getRowCount() > 0 && lastSql != null ) { 881 setViewClms( lastSql ); 882 } 883 } 884 885 if( useTimeView && useAfterHtmlTag ) { // 6.3.6.0 (2015/08/16) 886 // 3.5.4.7 (2004/02/06) 887 final long dyTime = System.currentTimeMillis()-dyStart; 888 jspPrint( "<div id=\"viewTime\" value=\"" + (dyTime) + "\"></div>" ); // 3.5.6.3 (2004/07/12) 889 } 890 891 return EVAL_PAGE ; 892 } 893 894 /** 895 * タグリブオブジェクトをリリースします。 896 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 897 * 898 * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 899 * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 900 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 901 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 902 * @og.rev 3.5.2.0 (2003/10/20) headerSkipCount属性を追加 903 * @og.rev 3.5.3.0 (2003/10/27) backLinkCount,headerSkipCount属性の初期値をPropertyファイルから設定 904 * @og.rev 3.5.4.0 (2003/11/25) format 関係の文字列を廃止。TableFormatter クラスを使用する。 905 * @og.rev 3.5.4.3 (2004/01/05) useCheckControl属性を追加 906 * @og.rev 3.5.4.7 (2004/02/06) DBTableModelのソート機能 useTableSorter を追加 907 * @og.rev 3.5.4.7 (2004/02/06) 実行時間測定用に、dyStart を追加します。 908 * @og.rev 3.5.4.8 (2004/02/23) ViewParamTag のパラメータを追加します。 909 * @og.rev 3.5.5.8 (2004/05/20) useConsistency 属性を追加します。 910 * @og.rev 3.5.6.2 (2004/07/05) bgColorCycle 変数の追加。 911 * @og.rev 3.5.6.3 (2004/07/12) useScrollBar 変数の追加。 912 * @og.rev 3.6.0.0 (2004/09/17) sortKeys 変数の追加。カラムソートリンクを出すカラム名を指定。 913 * @og.rev 3.6.0.4 (2004/10/14) loadMarker 変数の追加。 914 * @og.rev 3.7.0.1 (2005/01/31) 全件チェックコントロール変更(useCheckControl) 915 * @og.rev 3.7.1.1 (2005/05/23) SEL_ROW機能の有効/無効を指定します。 916 * @og.rev 3.7.1.1 (2005/05/23) 処理時間やページサイズなどの情報出力の有効/無効を指定します。 917 * @og.rev 3.8.0.9 (2005/10/17) writableControl 属性を追加します。 918 * @og.rev 3.8.6.0 (2006/09/29) useHilightRow 属性を追加します。 919 * @og.rev 3.8.6.1 (2006/10/20) editMarkerId , popupReturnKeys属性を追加します。 920 * @og.rev 4.3.0.0 (2008/07/04) fileUD ファイルダウンロード時の抜出カラム名(CSV形式) 921 * @og.rev 4.3.1.0 (2008/09/08) isSkipNoEdit属性対応 922 * @og.rev 4.3.3.0 (2008/10/01) noTransition 属性を追加します。 923 * @og.rev 4.3.7.0 (2009/06/01) useHilightCheckOnly 属性を追加します。 924 * @og.rev 5.1.6.0 (2010/05/01) clmSeqDisplay 属性を追加します。 925 * @og.rev 5.1.8.0 (2010/07/01) noGroup , noGroup 属性を追加します。 926 * @og.rev 5.1.8.0 (2010/07/01) bgColorClsClm 属性を追加します。 927 * @og.rev 5.2.1.0 (2010/10/01) 一括入力カラムのアシスト機能を利用する、columnBulkSet 属性を追加します。 928 * @og.rev 5.5.9.0 (2012/12/03) viewArrayList追加 929 * @og.rev 5.7.6.1 (2014/05/09) mainView追加 930 * @og.rev 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 931 * @og.rev 6.0.3.0 (2014/11/13) Edit機能の超特殊処理。editMarkerClmNos 追加 932 * @og.rev 6.2.2.0 (2015/03/27) hilightRow で、行選択時にイベント発行可否を指定できるようにする。isHiRadioClick 追加 933 * @og.rev 6.2.4.0 (2015/05/15) maxScrollBarSize 追加 934 * @og.rev 6.2.5.0 (2015/06/05) Edit機能改善。条件によっては、書き込み許可するので、特殊処理廃止 935 * @og.rev 6.3.6.0 (2015/08/16) useTimeView の初期値を、VIEW_USE_TIMEBAR にする。 936 * @og.rev 6.4.6.1 (2016/06/03) tableId 廃止(利用目的を明確にするため、パラメータ名をviewClassに変更) 937 * @og.rev 6.7.3.0 (2017/01/27) groupDir追加 938 * @og.rev 6.9.5.0 (2018/04/23) useCheckControl 初期値=1:全チェックを使用 939 * @og.rev 6.9.5.0 (2018/04/23) USE_CONSISTENCY 廃止(true固定) 940 */ 941 @Override 942 protected void release2() { 943 super.release2(); 944 tableId = HybsSystem.TBL_MDL_KEY; 945 viewFormId = HybsSystem.VIEWFORM_KEY; 946 viewFormType = null; 947 viewLinkId = HybsSystem.VIEWLINK_KEY; 948 viewMarkerId = HybsSystem.VIEW_MARK_KEY; 949 editMarkerId = HybsSystem.EDIT_MARK_KEY; // 3.8.6.1 (2006/10/20) 950 command = null; 951 startNo = -1; // HTML画面上の表示開始位置(初期値) 952 tempStartNo = -1; // 再検索時の表示開始位置 953 pageSize = -1; // HTML画面上に表示する件数 954 pagePlus = -1; // 3.5.6.4 (2004/07/16) 955 table = null; 956 form = null; 957 columnWritable = null; 958 noWritable = null; 959 columnDisplay = null; 960 noDisplay = null; 961 clmSeqDisplay = null; // 5.1.6.0 (2010/05/01) ViewForm_HTMLSeqClmTable 対応 962 columnGroup = null; // 3.8.5.0 (2006/03/20) 963 noGroup = null; // 5.1.8.0 (2010/07/01) 964 groupClass = null; // 5.1.8.0 (2010/07/01) 965 groupDir = false; // 6.7.3.0 (2017/01/27) false:ROW/true:COLUMN 966 noMessage = false; 967 writable = null; 968 checked = null; 969 skip = ViewForm.DEFAULT_SKIP; 970 rowspan = "2"; 971 selectedType = "checkbox"; 972 numberType = "sequence"; 973 optTypeAttri = null; 974 values = null; 975 backLinkCount = HybsSystem.sysInt( "VIEW_BACK_LINK_COUNT" ); 976 headerSkipCount = HybsSystem.sysInt( "VIEW_HEADER_SKIP_COUNT" ); // 0:通常ヘッダ、n:n回ごとに現れる 977 bodyString = null; 978// useCheckControl = -1 ; 979 useCheckControl = 1 ; // 6.9.5.0 (2018/04/23) 初期値=1:全チェックを使用 980 useTableSorter = null ; // 3.5.4.7 (2004/02/06) 981 useTimeView = HybsSystem.sysBool( "VIEW_USE_TIMEBAR" ); // 6.3.6.0 (2015/08/16) 982 viewParam = null; // 3.5.4.8 (2004/02/23) 983 useParam = false; // 3.5.4.8 (2004/02/23) 984// useConsistency = HybsSystem.sysBool( "USE_CONSISTENCY" ); // 3.5.5.8 (2004/05/20) 985 useConsistency = true; // 6.9.5.0 (2018/04/23) true固定 986 bgColorCycle = 1 ; // 3.5.6.2 (2004/07/05) 987 bgColorClsClm = null; // 5.1.8.0 (2010/07/01) 988 useScrollBar = null; 989 maxScrollBarSize = HybsSystem.sysInt( "VIEW_SCROLLBAR_MAX_ROW_SIZE" ) ; // 6.2.4.0 (2015/05/15) 990 sortKeys = null; // 3.6.0.0 (2004/09/17) 991 loadMarker = ",NEW,RENEW,REVIEW,RESET,"; // 4.0.0.0 (2007/11/26) 992 useSelectedRow = null; 993 useSelRowColor = null; 994 useAfterHtmlTag = true; // 3.7.1.1 (2005/05/23) 995 writableControl = null; // 3.8.0.9 (2005/10/17) 996 useHilightRow = null; // 3.8.6.0 (2006/09/29) 997 popupReturnKeys = null; // 3.8.6.1 (2006/10/20) 998 clazz = "viewTable"; // 4.0.0 (2007/04/16) 999 height = null; // 4.2.0.0 (2008/03/18) 1000 width = null; // 4.2.0.0 (2008/03/18) 1001 fileDwnClms = null; // 4.3.0.0 (2008/07/04) 1002 skipNoEdit = false; // 4.3.1.0 (2008/09/08) 1003 noTransition = false; // 4.3.3.0 (2008/10/01) 1004 isHiRowCheckOnly = null; // 4.3.7.0 (2009/06/01) // 6.0.2.5 (2014/10/31) refactoring 1005 isHiRadioClick = null; // 6.2.2.0 (2015/03/27) 1006 columnBulkSet = null; // 5.2.1.0 (2010/10/01) 1007 useDefBulkset = HybsSystem.sysBool( "VIEW_USE_DEFAULT_BULKSET" ) ; // 5.2.1.0 (2010/10/01) 1008 viewArrayList = null; // 5.5.9.0 (2012/12/03) 1009 isMainView = true; // 5.7.6.1 (2014/05/09) 1010 lastSql = null; // 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 1011 editConf = null; // 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 1012 viewClass = null; // 6.4.6.1 (2016/06/03) 1013 } 1014 1015 /** 1016 * 左右分割スクロール(SplitViewTag)が存在すれば、パラメータの初期値設定などを行います。 1017 * 1018 * @og.rev 5.3.0.0 (2010/12/01) 左右分割スクロール(SplitViewTag)対応 1019 * @og.rev 5.5.4.0 (2012/07/02) 2回目のnoDisplayを追記型に変更 1020 * @og.rev 6.4.6.1 (2016/06/03) tableId 廃止(利用目的を明確にするため、パラメータ名をviewClassに変更) 1021 * @og.rev 6.9.5.0 (2018/04/23) 左右分割に、使用をON/OFFするフラグを追加 1022 */ 1023 private void splitViewParamSet() { 1024 final SplitViewTag splitView = (SplitViewTag)findAncestorWithClass( this,SplitViewTag.class ); 1025// if( splitView != null ) { 1026 if( splitView != null && splitView.isUseSplit() ) { // 6.9.5.0 (2018/04/23) isUseSplit() が、true の場合のみ実施 1027 final String fixDisplay = splitView.getFixDisplay(); 1028 final boolean isFirstStep = splitView.isFirstStep(); 1029 1030 if( isFirstStep ) { // 1回目(左側:固定部) 1031 // Viewタグの左側には、fixDisplay のカラムを columnDisplay に設定する。 1032 columnDisplay = fixDisplay; 1033 noDisplay = null; 1034 viewClass = "VIEW_X1"; // 6.4.6.1 (2016/06/03) 1035 } 1036 else { // 2回目(右側:可変部) 1037 // Viewタグの右側には、command="VIEW" , noMessage="true" , useSelectedRow="false" 1038 // numberType="delete" をセットするとともに、fixDisplay のカラムを noDisplay の 1039 columnDisplay = null; 1040 if( noDisplay != null && noDisplay.length() > 0 ){ 1041 noDisplay += "," + fixDisplay; // 5.5.4.0 (2012/07/02) CSV形式で追記する 1042 } 1043 else{ 1044 noDisplay = fixDisplay; 1045 } 1046 1047 command = "VIEW"; 1048 numberType = "delete"; 1049 noMessage = true; 1050 useSelectedRow = "false"; 1051 viewClass = "VIEW_X2"; // 6.4.6.1 (2016/06/03) 1052 } 1053 } 1054 } 1055 1056 /** 1057 * 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します 1058 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])。 1059 * 1060 * @og.tag 1061 * 検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 1062 * 渡す場合に、通常は、session を利用します。その場合の登録キーです。 1063 * query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 1064 * この tableId 属性を利用して、メモリ空間を分けます。 1065 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])。 1066 * 1067 * @param id テーブルID (sessionに登録する時のID) 1068 */ 1069 public void setTableId( final String id ) { 1070 tableId = nval( getRequestParameter( id ),tableId ); // 3.8.0.9 (2005/10/17) 1071 } 1072 1073 /** 1074 * 【TAG】(通常は使いません)sessionから取得する ViewForm オブジェクトの ID。 1075 * 1076 * @og.tag 1077 * 表示処理後に,(内部ポインタを書き換えた)ViewForm オブジェクトを 1078 * 同じキーで、sessionに登録します。 1079 * 初期値は、HybsSystem.VIEWFORM_KEY です。 1080 * 1081 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1082 * @og.rev 3.5.6.4 (2004/07/16) VIEW_ID を付加して、他のid と混同しないようにします。 1083 * 1084 * @param id ViewFormオブジェクトID 1085 */ 1086 public void setViewFormId( final String id ) { 1087 final String temp = getRequestParameter( id ) ; 1088 if( temp != null && temp.length() > 0 ) { 1089 viewFormId = temp + TaglibUtil.VIEW_ID; 1090 } 1091 } 1092 1093 /** 1094 * 【TAG】(通常は使いません)requestから取得する ViewLink に対応する Attributes オブジェクトの ID。 1095 * 1096 * @og.tag 1097 * ViewForm オブジェクトに、ViewLink オブジェクトをこのキーより取得することにより、 1098 * カラムに対して、リンク情報を付加して表示させる。 1099 * 初期値は、HybsSystem.VIEWLINK_KEY です。 1100 * 1101 * @og.rev 3.1.4.0 (2003/04/18) 初期値を考慮して、属性登録を行うように変更。 1102 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1103 * @og.rev 3.5.6.4 (2004/07/16) LINK_ID を付加して、他のid と混同しないようにします。 1104 * 1105 * @param id ViewLinkオブジェクトID 1106 */ 1107 public void setViewLinkId( final String id ) { 1108 final String temp = getRequestParameter( id ) ; 1109 if( temp != null && temp.length() > 0 ) { 1110 viewLinkId = temp + TaglibUtil.LINK_ID; 1111 } 1112 } 1113 1114 /** 1115 * 【TAG】(通常は使いません)requestから取得する ViewMarker に対応する Attributes オブジェクトの ID。 1116 * 1117 * @og.tag 1118 * ViewForm オブジェクトに、ViewMarker オブジェクトをこのキーより取得することにより、 1119 * カラムに対して、マーカー情報を付加して表示させる。 1120 * 初期値は、HybsSystem.VIEW_MARK_KEY です。 1121 * 1122 * @og.rev 3.1.4.0 (2003/04/18) 新規追加 1123 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1124 * @og.rev 3.5.6.4 (2004/07/16) MARK_ID を付加して、他のid と混同しないようにします。 1125 * 1126 * @param id ViewMarkerオブジェクトID 1127 */ 1128 public void setViewMarkerId( final String id ) { 1129 final String temp = getRequestParameter( id ) ; 1130 if( temp != null && temp.length() > 0 ) { 1131 viewMarkerId = temp + TaglibUtil.MARK_ID; 1132 } 1133 } 1134 1135 /** 1136 * 【TAG】(通常は使いません)requestから取得する EditMarker に対応する Attributes オブジェクトの ID。 1137 * 1138 * @og.tag 1139 * ViewForm オブジェクトに、EditMarker オブジェクト(実際は、ViewMarker オブジェクト)を 1140 * このキーより取得することにより、カラムに対して、マーカー情報を付加して表示させる。 1141 * 初期値は、HybsSystem.EDIT_MARK_KEY です。 1142 * 1143 * @og.rev 3.8.6.1 (2006/10/20) 新規追加 1144 * 1145 * @param id EditMarkerオブジェクトID (実際は、ViewMarker オブジェクト) 1146 */ 1147 public void setEditMarkerId( final String id ) { 1148 final String temp = getRequestParameter( id ) ; 1149 if( temp != null && temp.length() > 0 ) { 1150 editMarkerId = temp + TaglibUtil.MARK_ID; 1151 } 1152 } 1153 1154 /** 1155 * 【TAG】ViewForm オブジェクトを作成するクラス({@og.doc03Link viewFormType ViewForm_**** クラスの ****})を指定します。 1156 * 1157 * @og.tag 1158 * これは、org.opengion.hayabusa.html 以下の ViewForm_**** クラスの **** を 1159 * 与えます。これらは、ViewForm インターフェースを継承したサブクラスです。 1160 * 属性クラス定義の {@link org.opengion.hayabusa.html.ViewForm ViewForm} を参照願います。 1161 * {@og.doc03Link viewFormType ViewForm_**** クラス} 1162 * 1163 * @param id ViewFormクラス 1164 * @see org.opengion.hayabusa.html.ViewForm ViewFormのサブクラス 1165 */ 1166 public void setViewFormType( final String id ) { 1167 viewFormType = getRequestParameter( id ); 1168 1169 if( viewFormType == null || viewFormType.isEmpty() ) { 1170 final String errMsg = "viewForm の id が設定されていません。"; 1171 throw new HybsSystemException( errMsg ); 1172 } 1173 } 1174 1175 /** 1176 * 【TAG】コマンド (PREV,NEXT,FIRST,LAST,NEW,RENEW,VIEW,REVIEW,RESET)をセットします。 1177 * 1178 * @og.tag 1179 * コマンドは,HTMLから(get/post)指定されますので,CMD_xxx で設定される 1180 * フィールド定数値のいづれかを、指定できます。 1181 * 1182 * @og.rev 3.8.0.8 (2005/10/03) その他のコマンドを CMD_XXX にします。 1183 * @og.rev 6.3.4.0 (2015/08/01) checkメソッド内で、nullチェックも行っている。 1184 * @og.rev 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 1185 * 1186 * @param cmd コマンド (public static final 宣言されている文字列) 1187 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.ViewFormTag.CMD_PREV">コマンド定数</a> 1188 */ 1189 public void setCommand( final String cmd ) { 1190 final String cmd2 = getRequestParameter( cmd ); 1191 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); } 1192 1193 if( ! check( command, COMMAND_SET ) ) { 1194 // 3.8.0.8 (2005/10/03) その他のコマンドを CMD_XXX にします。 1195 command = CMD_XXX ; 1196 } 1197 } 1198 1199 /** 1200 * 【TAG】表示データを作成する場合の表示の開始行番号(先頭は0)をセットします。 1201 * 1202 * @og.tag 1203 * セットされていない場合は,変更しません。 1204 * 1205 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 1206 * 1207 * @param no 表示開始 1208 */ 1209 public void setStartNo( final String no ) { 1210 startNo = nval( getRequestParameter( no ),startNo ); 1211 tempStartNo = startNo; 1212 } 1213 1214 /** 1215 * 【TAG】表示データを作成する場合の1ページの行数をセットします。 1216 * 1217 * @og.tag 1218 * セットされていない場合は,変更しません。 1219 * 1220 * @param sz 表示件数 1221 */ 1222 public void setPageSize( final String sz ) { 1223 pageSize = nval( getRequestParameter( sz ),pageSize ); 1224 } 1225 1226 /** 1227 * 【TAG】1ページの行数の増加分をセットします(初期値:0)。 1228 * 1229 * @og.tag 1230 * セットされていない場合は,0(増加なし)です。 1231 * 1232 * @param pp 1ページの行数 1233 */ 1234 public void setPagePlus( final String pp ) { 1235 pagePlus = nval( getRequestParameter( pp ),pagePlus ); 1236 } 1237 1238 /** 1239 * 【TAG】ページの先頭へのリンクの間隔をセットします 1240 * (初期値:VIEW_BACK_LINK_COUNT[={@og.value SystemData#VIEW_BACK_LINK_COUNT}])。 1241 * 1242 * @og.tag 1243 * 0 にセットすると、リンクは作成されません。 1244 * テーブルのヘッダー固定ができないケースでは、データ件数が多いと、登録ボタンが見えなくなります。 1245 * その場合、スクロールして上に上がるより、行番号に作成されリンクで、一気に上に戻るほうが早く処理できます。 1246 * その場合、段組み等していると、間隔を少なくしておく必要が出てきます。 1247 * ヘッダー固定を利用する場合は、不要です。 1248 * (初期値:システム定数のVIEW_BACK_LINK_COUNT[={@og.value SystemData#VIEW_BACK_LINK_COUNT}])。 1249 * 1250 * @param blc リンクの間隔 1251 * @see org.opengion.hayabusa.common.SystemData#VIEW_BACK_LINK_COUNT 1252 */ 1253 public void setBackLinkCount( final String blc ) { 1254 backLinkCount = nval( getRequestParameter( blc ),backLinkCount ); 1255 } 1256 1257 /** 1258 * 【TAG】ヘッダーを出力する間隔をセットします 1259 * (初期値:VIEW_HEADER_SKIP_COUNT[={@og.value SystemData#VIEW_HEADER_SKIP_COUNT}])。 1260 * 1261 * @og.tag 1262 * 0を指定すると、繰り返しません(つまり、ヘッダーを最初に表示するだけです。) 1263 * 数字を指定すると、その回数毎に、ヘッダーをデータの行に挿入します。 1264 * (初期値:システム定数のVIEW_HEADER_SKIP_COUNT[={@og.value SystemData#VIEW_HEADER_SKIP_COUNT}])。 1265 * 1266 * @og.rev 3.5.2.0 (2003/10/20) 新規作成 1267 * 1268 * @param hsc ヘッダーの表示間隔 (0:通常ヘッダ,n:n回ごとに現れる) 1269 * @see org.opengion.hayabusa.common.SystemData#VIEW_HEADER_SKIP_COUNT 1270 */ 1271 public void setHeaderSkipCount( final String hsc ) { 1272 headerSkipCount = nval( getRequestParameter( hsc ),headerSkipCount ); 1273 } 1274 1275 /** 1276 * 【TAG】書き込み可能カラム名を、CSV形式で与えます。 1277 * 1278 * @og.tag 1279 * これは、書き込み不可カラム名の指定(noWritable)と同時にセットする 1280 * ことは出来ません。 1281 * "*" を指定すると、すべてのカラムを(columnWritable)指定したことになります。 1282 * 1283 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1284 * @og.rev 4.1.2.0 (2008/03/12) 引数に、"null" を指定可能とする。 1285 * @og.rev 4.2.1.0 (2008/04/11) null チェック方法変更 1286 * @og.rev 4.2.1.1 (2008/04/30) 引数にA,B,{@XXXX}等が指定された場合に{@XXXX}の変換が行われないバグを修正 1287 * @og.rev 5.1.8.0 (2010/07/01) noWritable 同時セットチェックを、メソッドではなく、本体で行う。 1288 * 1289 * @param columnName 書込可能カラム名 (CSV形式) (例:"OYA,KO,HJO,SU,DYSET,DYUPD") 1290 * @see #setNoWritable( String ) 1291 */ 1292 public void setColumnWritable( final String columnName ) { 1293 columnWritable = nval( getRequestParameter(columnName),null ); 1294 if( "null".equalsIgnoreCase( columnWritable ) ) { columnWritable = ""; } 1295 } 1296 1297 /** 1298 * 【TAG】書き込み不可カラム名を、CSV形式で与えます。 1299 * 1300 * @og.tag 1301 * これは、書き込み可能カラム名の指定(columnWritable)と同時にセットする 1302 * ことは出来ません。 1303 * "*" を指定すると、すべてのカラムを(noWritable)指定したことになります。 1304 * 1305 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1306 * @og.rev 4.1.2.0 (2008/03/12) 引数に、"null" を指定可能とする。 1307 * @og.rev 4.2.1.0 (2008/04/11) null チェック方法変更 1308 * @og.rev 4.2.1.1 (2008/04/30) 引数にA,B,{@XXXX}等が指定された場合に{@XXXX}の変換が行われないバグを修正 1309 * @og.rev 5.1.8.0 (2010/07/01) noWritable 同時セットチェックを、メソッドではなく、本体で行う。 1310 * 1311 * @param columnName 書込不可カラム名 (CSV形式) (例:"OYA,KO,HJO,SU,DYSET,DYUPD") 1312 * @see #setColumnWritable( String ) 1313 */ 1314 public void setNoWritable( final String columnName ) { 1315 noWritable = nval( getRequestParameter(columnName),null ); 1316 if( "null".equalsIgnoreCase( noWritable ) ) { noWritable = ""; } 1317 } 1318 1319 /** 1320 * 【TAG】表示可能カラム名を、CSV形式で与えます。 1321 * 1322 * @og.tag 1323 * これは、表示不可カラム名の指定(noDisplay)と同時にセットする 1324 * ことは出来ません。 1325 * "*" を指定すると、すべてのカラムを(columnDisplay)指定したことになります。 1326 * 1327 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1328 * @og.rev 5.1.8.0 (2010/07/01) noWritable 同時セットチェックを、メソッドではなく、本体で行う。 1329 * 1330 * @param columnName 表示可能カラム名 (CSV形式) (例:"OYA,KO,HJO,SU,DYSET,DYUPD") 1331 * @see #setNoDisplay( String ) 1332 */ 1333 public void setColumnDisplay( final String columnName ) { 1334 columnDisplay = nval( getRequestParameter(columnName),null ); 1335 if( "null".equalsIgnoreCase( columnDisplay ) ) { columnDisplay = ""; } 1336 } 1337 1338 /** 1339 * 【TAG】表示不可カラム名を、CSV形式で与えます。 1340 * 1341 * @og.tag 1342 * これは、表示可能カラム名の指定(columnDisplay)と同時にセットする 1343 * ことは出来ません。 1344 * "*" を指定すると、すべてのカラムを(noDisplay)指定したことになります。 1345 * 1346 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1347 * @og.rev 5.1.8.0 (2010/07/01) noWritable 同時セットチェックを、メソッドではなく、本体で行う。 1348 * 1349 * @param columnName 表示不可カラム (CSV形式) (例:"OYA,KO,HJO,SU,DYSET,DYUPD") 1350 * @see #setColumnDisplay( String ) 1351 */ 1352 public void setNoDisplay( final String columnName ) { 1353 noDisplay = nval( getRequestParameter(columnName),null ); 1354 if( "null".equalsIgnoreCase( noDisplay ) ) { noDisplay = ""; } 1355 } 1356 1357 /** 1358 * 【TAG】表示可能カラム名を、カラム順に、CSV形式で与えます。 1359 * 1360 * @og.tag 1361 * これは、ViewForm_HTMLSeqClmTable 用に特別に用意された属性です。 1362 * 機能的には、columnDisplay 属性で、カラムの表示順まで指定できる機能を 1363 * 用意すべきですが、過去のタグとの互換性の関係で、別に用意しています。 1364 * (この属性を使用すると、通常の表示より、処理速度が低下します。) 1365 * 例:"OYA,KO,HJO,SU,DYSET,DYUPD" この順番で表示され、指定以外のカラムは表示されません。 1366 * 1367 * @og.rev 5.1.6.0 (2010/05/01) clmSeqDisplay 属性を追加します。 1368 * 1369 * @param columnName カラム名 1370 */ 1371 public void setClmSeqDisplay( final String columnName ) { 1372 clmSeqDisplay = nval( getRequestParameter(columnName),null ); 1373 } 1374 1375 /** 1376 * 【TAG】同一表示データをまとめる(表示しない)カラム名を、CSV形式で与えます。 1377 * 1378 * @og.tag 1379 * これは、カラムのグループ化指定を行います。 1380 * 同じカラム番号で一つ上の行番号と同じ内容の場合に、特殊な表示方法で表示します。 1381 * 対応は、表示(Renderer)時のみとします。 1382 * 特殊な表示方法の指定は、groupClass 属性で指定します。 1383 * (例:groupClass にアルファベット以外の文字・・そのまま表示、アルファベットはクラス属性を付与します。) 1384 * カラム単位なので、新しいゼブラによる色分けは行いません。(任意のカラムに適用できる為) 1385 * また、ファイル出力などのデータ自身は変更されていませんので、そのままデータが落ちます。 1386 * 1387 * これは、同一表示データをまとめないカラム名の指定(noGroup)と同時にセットする 1388 * ことは出来ません。 1389 * "*" を指定すると、すべてのカラムを(columnGroup)指定したことになります。 1390 * 1391 * @og.rev 3.8.5.0 (2006/03/20) 新規追加 1392 * @og.rev 5.1.8.0 (2010/07/01) noWritable 同時セットチェックを、メソッドではなく、本体で行う。 1393 * 1394 * @param group グループカラム (CSV形式) (例:"OYA,KO,HJO,SU,DYSET,DYUPD") 1395 * @see #setNoGroup( String ) 1396 * @see #setGroupClass( String ) 1397 */ 1398 public void setColumnGroup( final String group ) { 1399 columnGroup = nval( getRequestParameter( group ),null ); 1400 if( "null".equalsIgnoreCase( columnGroup ) ) { columnGroup = ""; } 1401 } 1402 1403 /** 1404 * 【TAG】同一表示データをまとめないカラム名を、CSV形式で与えます。 1405 * 1406 * @og.tag 1407 * これは、カラムのグループ化指定で、同一でもまとめないカラムを指定するほうが簡単な場合に 1408 * 使用します。例えば、キー情報以外は、グループ化指定したい場合などに便利です。 1409 * 動作は、columnGroup の動きと同じです。(まとめないカラムを指定するだけです。) 1410 1411 * これは、同一表示データをまとめるカラム名の指定(columnGroup)と同時にセットする 1412 * ことは出来ません。 1413 * "*" を指定すると、すべてのカラムを(noGroup)指定したことになります。 1414 * 1415 * @og.rev 5.1.8.0 (2010/07/01) 新規追加 1416 * 1417 * @param group グループ除外カラム (CSV形式) (例:"OYA,KO,HJO,SU,DYSET,DYUPD") 1418 * @see #setColumnGroup( String ) 1419 * @see #setGroupClass( String ) 1420 */ 1421 public void setNoGroup( final String group ) { 1422 noGroup = nval( getRequestParameter( group ),null ); 1423 if( "null".equalsIgnoreCase( noGroup ) ) { noGroup = ""; } 1424 } 1425 1426 /** 1427 * 【TAG】同一表示データをまとめる場合の、表示方法を指定します。 1428 * 1429 * @og.tag 1430 * これは、カラムのグループ化指定(columnGroup)を行う場合の、まとめ表示の方法を指定します。 1431 * なにも指定しない場合は、まとめカラムは、表示しない(ゼロ文字列)になります。 1432 * その場合、先の行と同じ場合も、変更されたカラムが、NULL(ゼロ文字列)であった場合も、 1433 * 同じ用に表示されるため、区別が付きません。 1434 * そこで、前の行と同じデータの場合に、特殊な処理を行うことで、区別できるようにします。 1435 * 指定方法が特殊なので、注意が必要です。 1436 * 記号の場合: 1437 * 記号(-- , → , ↓ , * など)が指定された場合は、そのままの文字に置き換えられます。 1438 * 初期値は、空文字列(ゼロ文字列)です。 1439 * アルファベットの場合: 1440 * アルファベット(a-z,A-Z)の場合は、<span class="アルファベット">元の文字</span> 1441 * 例えば、バックカラーに色を付ける、文字を薄い灰色にする、などできます。 1442 * ただし、データ量が圧倒的に増えるため、大量のデータ等で使用するのは避けたほうが良いと思います。 1443 * 1444 * @og.rev 3.8.5.0 (2006/03/20) 新規追加 1445 * 1446 * @param grpCls まとめ表示の方法 1447 * @see #setColumnGroup( String ) 1448 */ 1449 public void setGroupClass( final String grpCls ) { 1450 groupClass = nval( getRequestParameter(grpCls),null ); 1451 } 1452 1453 /** 1454 * 【TAG】同一表示データをまとめる場合に、行(row)か列(column)を指定します(初期値:ROW)。 1455 * 1456 * @og.tag 1457 * これは、カラムのグループ化指定(columnGroup)を行う場合の、まとめ表示の方向を指定します。 1458 * ROW(初期値)を指定すると、指定のカラムで、行単位に同一データかどうかを判定します。 1459 * COLUMNを指定すると、columnGroup で指定した順番に、列方向に同一データかどうかを判定します。 1460 * 1461 * 指定には、ROW/COLUMN ですが、最初の一文字(R or C)で、かまいません。 1462 * また、初期値は、ROW なので、C が指定されているかどうかで、判定しています。 1463 * DBTableModelの登録順で、ひとつ前のカラムと比較します。 1464 * 1465 * @og.rev 6.7.3.0 (2017/01/27) 新規追加 1466 * 1467 * @param dir まとめ表示の方向(ROW/COLUMN) 1468 * @see #setColumnGroup( String ) 1469 */ 1470 public void setGroupDir( final String dir ) { 1471 final String grpDir = nval( getRequestParameter(dir),null ); 1472 groupDir = grpDir != null && grpDir.length() > 0 && ( grpDir.charAt(0) == 'C' || grpDir.charAt(0) == 'c' ); 1473 } 1474 1475 /** 1476 * 【TAG】カラム名リンクソートを表示するカラム名を、CSV形式で与えます。 1477 * 1478 * @og.tag 1479 * ヘッダーにソート用リンクを作成する useTableSorter 属性 に対して、 1480 * カラム個別に作成する場合のカラム名をCSV形式で指定します。 1481 * この sortKeys 属性は、useTableSorter 属性 と無関係に、指定した 1482 * カラムのみ、リンクを表示します。 1483 * "*" を指定すると、すべてのカラムを(tableSorterKeys)指定したことになります。 1484 * 例:"OYA,KO,HJO,SU,DYSET,DYUPD" 1485 * 1486 * @og.rev 3.6.0.0 (2004/09/17) 新規作成 1487 * 1488 * @param columnName カラム名 1489 */ 1490 public void setTableSorterKeys( final String columnName ) { 1491 sortKeys = nval( getRequestParameter(columnName),null ); 1492 } 1493 1494 /** 1495 * 【TAG】検索結果メッセージを表示しないかどうか[true/false]を設定します(初期値:false[表示する])。 1496 * 1497 * @og.tag 1498 * 初期値は、表示する(true以外)です。 1499 * 1500 * @param flag 検索結果非表示 [true:表示しない/それ以外:表示する] 1501 */ 1502 public void setNoMessage( final String flag ) { 1503 noMessage = nval( getRequestParameter( flag ),noMessage ); 1504 } 1505 1506 /** 1507 * 【TAG】行が書き込み可能かどうか[true/false]を設定します 1508 * (初期値:DBTableModel#DEFAULT_WRITABLE[={@og.value DBTableModel#DEFAULT_WRITABLE}])。 1509 * 1510 * @og.tag 1511 * 書込み許可する場合は, true、許可しない場合は, true 以外を設定します。 1512 * ここで、false を設定すると全行書込み禁止になります。true を設定した 1513 * 場合、デフォルトで書込み許可が与えられ、先頭カラムが writable であれば、 1514 * その値を取り込んで、行ごとの書込み許可/不許可が決定されます。 1515 * writable,checked,useCheckControl については、writable が最優先で 1516 * 次に、useCheckControl="2"(または、checked)、次に、checked を判定します。 1517 * checked="true"の場合は、useCheckControl が、"1"(true)以上の場合、 1518 * "2"(checked)に設定されます。 1519 * (初期値:DBTableModel#DEFAULT_WRITABLE[={@og.value DBTableModel#DEFAULT_WRITABLE}])。 1520 * 1521 * @param flag 書き込み許可 [true:許可/false:不可] 1522 * @see org.opengion.hayabusa.db.DBTableModel#DEFAULT_WRITABLE 1523 */ 1524 public void setWritable( final String flag ) { 1525 writable = getRequestParameter( flag ); 1526 } 1527 1528 /** 1529 * テーブルデータに書込み許可/チェック状態を設定します。 1530 * 1531 * @og.rev 3.6.0.0 (2004/09/17) writable が false の場合全件チェック用チェックボックスを出さない。 1532 * @og.rev 3.7.0.1 (2005/01/31) 全件チェックコントロールのロジック変更(useCheckControl) 1533 * @og.rev 3.8.8.5 (2007/03/09) 全件チェック(useCheckControl)と、個別チェック(checked)の整合性 1534 * @og.rev 5.5.5.6 (2012/08/31) ユーザーと画面の関係が、リードオンリーの場合は、writable=falseを内部設定する。 1535 * @og.rev 5.5.6.1 (2012/09/03) writable自動セットは指定コマンドのみ 1536 * @og.rev 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 1537 * 1538 * @param table DBTableModelオブジェクト 1539 */ 1540 private void setTableRowWritable( final DBTableModel table ) { 1541 1542 // 5.5.5.6 (2012/08/31) リードオンリーの場合は、writable=falseを内部設定する。 1543 // このタグで、writable が指定された場合は、そちらを優先する。(つまり、null の場合は、内部設定する。) 1544 // 5.5.6.1 (2012/09/03) この処理を行うのは指定コマンドのみ 1545 if( ( writable == null || writable.isEmpty() ) && check( command, COMMAND_SET ) ) { 1546 final GUIInfo guiInfo = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY ); 1547 if( ! guiInfo.isWrite() ){ 1548 writable = "FALSE" ; 1549 } 1550 } 1551 1552 if( writable != null && writable.length() > 0 ) { 1553 final boolean flag = "TRUE".equalsIgnoreCase( writable ); 1554 table.setDefaultRowWritable( flag ); 1555 if( ! flag ) { useCheckControl = 0; } // 3.7.0.1 (2005/01/31) 1556 } 1557 1558 // 全チェックONの場合は、個別チェックもONにする。 1559 if( useCheckControl == 2 ) { checked = "true"; } // 3.8.8.5 (2007/03/09) 1560 1561 if( checked != null && checked.length() > 0 ) { 1562 final boolean flag = "TRUE".equalsIgnoreCase( checked ); 1563 table.setDefaultRowChecked( flag ); 1564 // 個別チェックONの場合は、全チェックもONにする。 1565 if( flag && useCheckControl >= 1 ) { useCheckControl = 2; } // 3.8.8.5 (2007/03/09) 1566 } 1567 } 1568 1569 /** 1570 * 【TAG】行のチェックボックスの初期値を設定するかどうか[true/false]を指定します(初期値:null)。 1571 * 1572 * @og.tag 1573 * 書き込み可能な行(rowWritable == true)のチェックボックスに対して 1574 * 初期値を 選択済みにするか、非選択済みにするかを指定します。 1575 * writable,checked,useCheckControl については、writable が最優先で 1576 * 次に、useCheckControl="2"(または、checked)、次に、checked を判定します。 1577 * checked="true"の場合は、useCheckControl が、"1"(true)以上の場合、 1578 * "2"(checked)に設定されます。 1579 * 1580 * @param flag 選択済設定 [true:選択済み/それ以外:非選択状態] 1581 */ 1582 public void setChecked( final String flag ) { 1583 checked = getRequestParameter( flag ); 1584 } 1585 1586 /** 1587 * 【TAG】NEXT等で、選択行以外をスキップするのかどうか[true/false]を指定します 1588 * (初期値:ViewForm#DEFAULT_SKIP[={@og.value ViewForm#DEFAULT_SKIP}])。 1589 * 1590 * @og.tag 1591 * 明細情報の登録/編集時に、必要な個所のみを順番に処理する場合に使用します。 1592 * (初期値:ViewForm#DEFAULT_SKIP[={@og.value ViewForm#DEFAULT_SKIP}])。 1593 * 1594 * @param flag スキップ [true:する/それ以外:しない] 1595 * @see org.opengion.hayabusa.html.ViewForm#DEFAULT_SKIP 1596 */ 1597 public void setSkip( final String flag ) { 1598 skip = nval( getRequestParameter( flag ),skip ); 1599 } 1600 1601 /** 1602 * 【TAG】表示データを作成する場合のフォーマットの行数(rowspan)をセットします(初期値:2)。 1603 * 1604 * @og.tag 表示データを作成する場合のフォーマットの行数をセットします。 1605 * 1606 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1607 * 1608 * @param rowspan フォーマットの行数 1609 */ 1610 public void setRowspan( final String rowspan ) { 1611 this.rowspan = getRequestParameter(rowspan); 1612 } 1613 1614 /** 1615 * 【TAG】表示時の選択用オブジェクトのタイプ[checkbox/radio/hidden/none]を指定します(初期値:checkbox)。 1616 * 1617 * @og.tag 1618 * 複数選択可能時は "checkbox" を指定します。 1619 * 一つだけ選ばせる場合は, "radio" を指定します。 1620 * 隠しフィールドで全件を選ぶ場合は、"hidden" を指定します。 1621 * noneを指定した場合は、行番号に関する情報は出力されません。受け側で、 1622 * selectedAll="true" など指定して処理してください。 1623 * 初期値は、"checkbox" です。 1624 * 1625 * @og.rev 3.3.1.1 (2003/07/03) {@XXXX} 変数が使用できるように修正。 1626 * 1627 * @param type 選択用タイプ [checkbox:複数選択/radio:一つだけ/hidden:全件選択/none:無出力] 1628 */ 1629 public void setSelectedType( final String type ) { 1630 selectedType = nval( getRequestParameter(type),selectedType ); 1631 } 1632 1633 /** 1634 * 【TAG】表示時の行番号の表示方法[sequence/none/delete/skip=カラム名/view=カラム名]を指定します(初期値:sequence)。 1635 * 1636 * @og.tag 1637 * ・sequenceは、1から始まる連番です。 1638 * ・none を指定すると、番号は表示されません。 1639 * ・delete を指定すると、行番号表示そのもののタグを取り除きます。(3.5.5.0 追加) 1640 * ・skip=カラム名を指定すると、そのカラムの値が NULL の場合は、番号をスキップします。 1641 * ・view=カラム名を指定すると、そのカラムの値が、使用されます。(ラベルは付きません) 1642 * skip=XX と、view=XX は、=の前後にスペースを入れないで下さい。 1643 * 初期値は、"sequence" です。 1644 * 1645 * @og.rev 3.5.1.0 (2003/10/03) 新規作成 1646 * 1647 * @param type 行番号表示タイプ [sequence:連番/none:非表示/delete:タグ削除/skip=カラム名/view=カラム名] 1648 */ 1649 public void setNumberType( final String type ) { 1650 numberType = nval( getRequestParameter(type),numberType ); 1651 } 1652 1653 /** 1654 * 【TAG】テーブル等のチェックボックスに属性を付加します。 1655 * 1656 * @og.tag 1657 * JavaScript などの HTML基本タグ以外の属性を、そのまま 1658 * チェックボックス/ラジオボタン等に使用します。 1659 * そのときに、(')は、(")に置き換えます。 1660 * 1661 * @param attributes チェックボックス追加属性 1662 */ 1663 public void setOptionTypeAttributes( final String attributes ) { 1664 final String optAttri = getRequestParameter( attributes ); 1665 if( optAttri != null && optAttri.length() > 0 ) { 1666 optTypeAttri = optAttri.replace( '\'', '\"' ); 1667 } 1668 } 1669 1670 /** 1671 * 【TAG】チェックボックスの全チェックを選択するJavaScript の機能を使用するかどうかを指定します(初期値=true:使用する)。 1672 * 1673 * @og.tag 1674 * "true" で、コントロール用のチェックボックスが現れて、この機能を使用することができるようになります。 1675 * false は、従来どおりです。 1676 * 使用するにあたり、jsp/commpn/default.js にJavaScriptを設定しておきます。(設定済み) 1677 * false は、0でも代用可能です。true は、1でも代用可能です。 1678 * checked は、2でも代用可能です。checked は、初期値を、チェック済みにします。 1679 * 注意:0,1,2,true,false,checked 以外の文字をセットすると、エラーが発生します。 1680 * writable,checked,useCheckControl については、writable が最優先で 1681 * 次に、useCheckControl="2"(または、checked)、次に、checked を判定します。 1682 * checked="true"の場合は、useCheckControl が、"1"(true)以上の場合、 1683 * "2"(checked)に設定されます。 1684 * 初期値=true:使用する 1685 * 1686 * @og.rev 3.5.4.3 (2004/01/05) 新規追加 1687 * @og.rev 3.7.0.1 (2005/01/31) 全件チェックコントロールのロジック変更(useCheckControl) 1688 * @og.rev 6.9.5.0 (2018/04/23) useCheckControl 初期値=1:全チェックを使用 1689 * 1690 * @param flag 全チェック選択可否 [true,1:使用する/false,0:使用しない/checked,2:初期値チェック済み] 1691 */ 1692 public void setUseCheckControl( final String flag ) { 1693 useCheckControl = intCase( getRequestParameter(flag) ); 1694 1695 if( useCheckControl < 0 ) { 1696 final String errMsg = "useCheckControl は、false(0)/true(1)/CHECKED(2) のいずれかしか登録できません。[" 1697 + flag + "]"; 1698 throw new HybsSystemException( errMsg ); 1699 } 1700 } 1701 1702 /** 1703 * 【TAG】ヘッダーにソート用リンクを作成するかどうか[true/false]を指定します 1704 * (初期値:VIEW_USE_TABLE_SORTER[={@og.value SystemData#VIEW_USE_TABLE_SORTER}])。 1705 * 1706 * @og.tag 1707 * "true" で、ヘッダーにソート用リンクを作成します。 1708 * false は、従来どおりです。 1709 * 検索済みのDBTableModelを、メモリ上でソートし、再表示させます。 1710 * (初期値:ユーザー定数のVIEW_USE_TABLE_SORTER[={@og.value SystemData#VIEW_USE_TABLE_SORTER}])。 1711 * 1712 * @og.rev 3.5.4.7 (2004/02/06) 新規追加 1713 * 1714 * @param flag ヘッダーソートリンク [true:作成する/false:作成しない] 1715 * @see org.opengion.hayabusa.common.SystemData#VIEW_USE_TABLE_SORTER 1716 */ 1717 public void setUseTableSorter( final String flag ) { 1718 useTableSorter = nval( getRequestParameter(flag),useTableSorter ); 1719 } 1720 1721 /** 1722 * 表示データをプレビュー可能かどうかを返します。 1723 * 1724 * 不可能な状態とは,すでに一番先頭から表示されている場合です。 1725 * 1726 * @return プレビュー可能(true)/不可能(false) 1727 */ 1728 private boolean isPrev() { 1729 return startNo > 0; // 6.2.6.0 (2015/06/19) refactoring 1730 } 1731 1732 /** 1733 * 表示データをネクスト可能かどうかを返します。 1734 * 1735 * 不可能な状態とは,すでに一番後ろが表示されている場合です。 1736 * 1737 * @return ネクスト可能(true)/不可能(false) 1738 */ 1739 private boolean isNext() { 1740 return (startNo + pageSize) < table.getRowCount(); // 6.2.6.0 (2015/06/19) refactoring 1741 } 1742 1743 /** 1744 * コマンドを実行します。 1745 * 1746 * コマンドは,HTMLから(get/post)指定されますので,setCommand()メソッドで 1747 * 登録します。 1748 * コマンドを登録すると同時に,実行も行ないます。 1749 * 1750 * @og.rev 3.8.0.8 (2005/10/03) その他のコマンドを CMD_XXX にします。 1751 * 1752 * @param command コマンド (public static final 宣言されている文字列) 1753 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.ViewFormTag.CMD_PREV">コマンド定数</a> 1754 */ 1755 private void commandExec( final String command ) { 1756 if( CMD_PREV.equals( command ) ) { prev() ; } 1757 else if( CMD_NEXT.equals( command ) ) { next() ; } 1758 else if( CMD_FIRST.equals( command ) ) { first() ; } 1759 else if( CMD_LAST.equals( command ) ) { last() ; } 1760 // else if( CMD_NEW.equals( command ) ) {} // 何もしない 1761 // else if( CMD_REVIEW.equals( command ) ) {} // 何もしない 1762 // else if( CMD_RESET.equals( command ) ) {} // 何もしない 1763 else if( CMD_VIEW.equals( command ) ) { view() ; } 1764 // 3.8.0.8 (2005/10/03) その他のコマンドを CMD_XXX にします。 1765 else if( CMD_XXX.equals( command ) ) { view() ; } 1766 this.command = null; 1767 } 1768 1769 /** 1770 * HTMLデータの表示をプレビュー(戻し)します。 1771 * 1772 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 1773 * 1774 */ 1775 private void prev() { 1776 if( ! isPrev() ) { return ; } // prev 出来ない。 1777 tempStartNo = tempStartNo - pageSize; 1778 if( tempStartNo < 0 ) { tempStartNo = 0; } 1779 if( skip ) { 1780 for( int i=startNo-1; i>=0; i-- ) { 1781 if( form.isMarked( i ) ) { 1782 startNo = i; 1783 break; 1784 } 1785 } 1786 return ; 1787 } 1788 1789 startNo = startNo - pageSize; 1790 if( startNo < 0 ) { 1791 startNo = 0; 1792 } 1793 } 1794 1795 /** 1796 * HTMLデータの表示をネクスト(先送り)します。 1797 * 1798 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 1799 * 1800 */ 1801 private void next() { 1802 if( ! isNext() ) { return ; } // next 出来ない。 1803 tempStartNo = tempStartNo + pageSize; 1804 if( skip ) { 1805 final int end = table.getRowCount(); 1806 for( int i=startNo+1; i<end; i++ ) { 1807 if( form.isMarked( i ) ) { 1808 startNo = i; 1809 break; 1810 } 1811 } 1812 return ; 1813 } 1814 1815 startNo = startNo + pageSize; 1816 } 1817 1818 /** 1819 * HTMLデータの表示をファースト(最初)します。 1820 * 1821 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 1822 * 1823 */ 1824 private void first() { 1825 tempStartNo = 0; 1826 if( tempStartNo < 0 ) { tempStartNo = 0; } 1827 if( skip ) { 1828 final int end = table.getRowCount(); 1829 for( int i=startNo; i<end; i++ ) { 1830 if( form.isMarked( i ) ) { 1831 startNo = i; 1832 break; 1833 } 1834 } 1835 return ; 1836 } 1837 1838 startNo = 0; 1839 } 1840 1841 /** 1842 * HTMLデータの表示をラスト(最後)します。 1843 * 1844 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 1845 * 1846 */ 1847 private void last() { 1848 tempStartNo = table.getRowCount() - pageSize; 1849 if( tempStartNo < 0 ) { tempStartNo = 0; } 1850 if( skip ) { 1851 for( int i=startNo; i>=0; i-- ) { 1852 if( form.isMarked( i ) ) { 1853 startNo = i; 1854 break; 1855 } 1856 } 1857 return ; 1858 } 1859 1860 startNo = table.getRowCount() - pageSize; 1861 if( startNo < 0 ) { startNo = 0; } 1862 } 1863 1864 /** 1865 * HTMLデータの表示をします。 1866 * 1867 */ 1868 private void view() { 1869 if( skip ) { 1870 final int end = table.getRowCount(); 1871 for( int i=startNo; i<end; i++ ) { 1872 if( form.isMarked( i ) ) { 1873 startNo = i; 1874 break; 1875 } 1876 } 1877 return ; 1878 } 1879 } 1880 1881 /** 1882 * startNo,pageSize,pagePlus の初期値を設定する。 1883 * 1884 * @og.rev 3.0.1.3 (2003/03/11) startNo を隠しフィールドに持つ処理を、追加 1885 * @og.rev 3.5.4.1 (2003/12/01) startNo をキャッシュから取り出すように変更。 1886 * @og.rev 3.5.4.7 (2004/02/06) getStartNoKeyメソッドの廃止(getRequestCacheDataを利用) 1887 * @og.rev 3.7.0.2 (2005/02/14) NEXT 時に何も選択しないで追加した場合は、1件目から表示する。 1888 * @og.rev 3.8.0.8 (2005/10/03) その他のコマンドを CMD_XXX にします。 1889 * 1890 */ 1891 private void setDefaultParameter() { 1892 // 3.7.0.2 (2005/02/14) 1893 // 3.8.0.8 (2005/10/03) その他のコマンドを CMD_XXX にします。 1894 if( CMD_XXX.equals( command ) ) { 1895 final String[] selected = getRequestValues( HybsSystem.ROW_SEL_KEY ) ; 1896 if( selected == null || selected.length == 0 ) { 1897 startNo = 0; 1898 tempStartNo = startNo; 1899 } 1900 } 1901 1902 if( startNo<0 ) { 1903 startNo = nval( getRequestCacheData( START_NO_KEY ),form.getStartNo() ) ; 1904 tempStartNo = startNo; 1905 } 1906 1907 if( pageSize<0 ) { 1908 pageSize = nval( getRequestValue( PAGE_SIZE_KEY ),form.getPageSize() ) ; 1909 } 1910 1911 if( pagePlus<0 ) { 1912 pagePlus = nval( getRequestValue( PAGE_PLUS_KEY ),0 ) ; 1913 } 1914 1915 } 1916 1917 /** 1918 * 内部タグの TheadTag / TbodyTag / TfootTag より、個々のフォーマットを定義する 1919 * 為のTableFormatter オブジェクトを受け取る。 1920 * 1921 * @og.rev 3.5.4.0 (2003/11/25) 新規登録(setAttributes メソッドより移行) 1922 * 1923 * @param form TableFormatterオブジェクト 1924 */ 1925 protected void addFormatter( final TableFormatter form ) { 1926 if( values == null ) { values = new ArrayList<>(); } 1927 values.add( form ); 1928 } 1929 1930 /** 1931 * pageSize をhidden属性で出力するタグを作成します。 1932 * 1933 * @og.rev 3.5.4.0 (2003/11/25) command="RESET"時に、戻った画面のpageSize がクリアされてしまう対応。 1934 * @og.rev 3.5.5.5 (2004/04/23) hidden の出力に、XHTMLTag.hidden を使用します。 1935 * 1936 * @param pageSize ページサイズ 1937 * 1938 * @return hidden属性で出力するタグ 1939 * @og.rtnNotNull 1940 */ 1941 private String makePageSize( final int pageSize ) { 1942 final String name = PAGE_SIZE_KEY; 1943 final String value = String.valueOf( pageSize ); 1944 1945 return XHTMLTag.hidden( name,value ); // 3.5.5.5 (2004/04/23) 1946 } 1947 1948 /** 1949 * consistencyKey をhidden属性で出力するタグを作成します。 1950 * 出力する条件は、useConsistency="true" (初期値)、で 1951 * scope が、 request 以外の場合です。 1952 * tableId が設定された場合は、consistencyKey に、tableId を加えた 1953 * キーにします。 1954 * 1955 * @og.rev 3.5.5.5 (2004/04/23) DBTableModel の整合性パラメータを hidden で出力します。 1956 * @og.rev 3.5.5.5 (2004/04/23) hidden の出力に、XHTMLTag.hidden を使用します。 1957 * @og.rev 3.5.5.8 (2004/05/20) makeConsistencyKey メソッドに処理ロジックを移します。 1958 * @og.rev 6.9.8.0 (2018/05/28) consistencyKey に、tableId を考慮します。 1959 * 1960 */ 1961 private void makeConsistencyKey() { 1962 if( useConsistency && ! "request".equals( getScope() ) ) { 1963 // 6.9.8.0 (2018/05/28) 初期値のままの場合は、tableId は、追記しません。 1964// final String name = HybsSystem.CONSISTENCY_KEY; 1965 final String name = HybsSystem.TBL_MDL_KEY.equals( tableId ) 1966 ? HybsSystem.CONSISTENCY_KEY 1967 : HybsSystem.CONSISTENCY_KEY + tableId ; 1968 1969 final String value = table.getConsistencyKey() ; 1970 1971 jspPrint( XHTMLTag.hidden( name,value ) ); 1972 } 1973 } 1974 1975 /** 1976 * "false","true","checked" の文字列を、それぞれ、0,1,2 に対応した数字に変換します。 1977 * それ以外の文字列は、-1 にします。 1978 * 1979 * @og.rev 3.7.0.1 (2005/01/31) 新規作成 1980 * 1981 * @param flag 変換対象 [true→1/false→0/checked→2] 1982 * 1983 * @return 設定値(0,1,2の数字、不正な場合は、-1 を返す。 1984 */ 1985 private static int intCase( final String flag ) { 1986 int rtn = -1; 1987 if( "FALSE".equalsIgnoreCase( flag ) || "0".equalsIgnoreCase( flag ) ) { 1988 rtn = 0; 1989 } 1990 else if( "TRUE".equalsIgnoreCase( flag ) || "1".equalsIgnoreCase( flag ) ) { 1991 rtn = 1; 1992 } 1993 else if( "CHECKED".equalsIgnoreCase( flag ) || "2".equalsIgnoreCase( flag ) ) { 1994 rtn = 2; 1995 } 1996 return rtn ; 1997 } 1998 1999 /** 2000 * ViewForm のサブクラスに渡すパラメータマップ。 2001 * 2002 * ※ 6.4.3.1 (2016/02/12) で、セットするMapを、ConcurrentHashMap に置き換えているため、 2003 * key,value ともに、not null制限が入っています。 2004 * 2005 * @og.rev 3.5.4.8 (2004/02/23) ViewParamTag のパラメータを追加します。 2006 * @og.rev 6.4.3.3 (2016/03/04) ConcurrentHashMap を受け取ることを明確にするため、I/FをConcurrentMapに変更します。 2007 * 2008 * @param map パラメータマップ 2009 */ 2010 protected void setParam( final ConcurrentMap<String,String> map ) { 2011 viewParam = map ; 2012 } 2013 2014 /** 2015 * ViewForm のサブクラスに渡すパラメータ(文字列配列のArrayList)を設定します。 2016 * 2017 * @og.rev 5.5.8.3 (2012/11/17) 新規作成(スタックガント対応) 2018 * @og.rev 5.5.9.0 (2012/12/03) objectからArrayListに変更 2019 * 2020 * @param list 文字列配列のArrayList 2021 */ 2022 protected void setViewArrayList( final List<String[]> list ) { 2023 viewArrayList = list; 2024 } 2025 2026 /** 2027 * 【TAG】パラメーターファイルの使用をするかどうか[true/false]を指定します(初期値:false)。 2028 * 2029 * @og.tag 2030 * "true" で、パラメータファイルを読み込むため、BODY部を処理します。 2031 * false は、パラメータファイうを使用しません。 2032 * パラメータファイルは、各ViewFormのサブクラス用に用意します。 2033 * 初期値は、false です。(false) 2034 * 2035 * @og.rev 3.5.4.8 (2004/02/23) 新規追加 2036 * 2037 * @param flag パラメーター使用可否 [true:使用する/false:使用しない] 2038 */ 2039 public void setUseParam( final String flag ) { 2040 useParam = nval( getRequestParameter(flag),useParam ); 2041 } 2042 2043 /** 2044 * 【TAG】Consistency キー による整合性チェックを行うかどうか[true/false]を指定します(初期値:true)。 2045 * 2046 * @og.tag 2047 * 検索結果を DBTableModel にセットする時に、整合性キーの Consistency キーを 2048 * 作成します。これを、Viewタグでhidden出力しておき、Entryタグでデータ書き換え時に 2049 * 整合性チェックを行います。これは、IEの戻るボタンで戻った場合に、画面の 2050 * キーと検索結果の DBTableModel の内容が一致しない場合のエラーチェックに 2051 * なります。 2052 * この属性は、何らかのケースで、このエラーチェックを行いたくない場合に、 2053 * false に設定することで、整合性チェックを行いません。 2054 * 初期値は、true(整合性チェックを行う)です。 2055 * 2056 * @og.rev 3.5.5.7 (2004/05/10) 新規登録 2057 * 2058 * @param ck 整合性チェック [true:行う/false:行わない] 2059 */ 2060 public void setUseConsistency( final String ck ) { 2061 useConsistency = nval( getRequestParameter( ck ),useConsistency ); 2062 } 2063 2064 /** 2065 * 【TAG】テーブルのバックグラウンドカラーの入れ替えのサイクルをセットします(初期値は、1:ゼブラ)。 2066 * 2067 * @og.tag 2068 * 0(ゼブラなし)、-1(ワーニング)、-2以下(エラー)、1(ゼブラ)、2以上(行数まとめ) 2069 * 初期値は、1(ゼブラ)です。 2070 * 2071 * @og.rev 3.5.6.2 (2004/07/05) 新規追加 2072 * 2073 * @param sycle ゼブラ指定 [0:ゼブラなし/-1:警告色/-2:エラー色/1:ゼブラ/2以上:行数まとめ] 2074 */ 2075 public void setBgColorCycle( final String sycle ) { 2076 bgColorCycle = nval( getRequestParameter( sycle ),bgColorCycle ); 2077 } 2078 2079 /** 2080 * 【TAG】テーブルのバックグラウンドカラーのクラスに指定するカラム名を指定します。 2081 * 2082 * @og.tag 2083 * 通常のゼブラ模様は、tr 属性のクラス指定として、row_0、row_1 が指定されます。 2084 * その代わりに、ここで指定されたカラムの値がクラス属性として設定されます。 2085 * (指定するのはカラム名です。行単位にクラス属性の値を変えることが可能です。) 2086 * 選択行(row_sel)は、優先して使用されます。 2087 * 出力されるクラス名は、"row_" + 属性値 になります。 2088 * 2089 * @og.rev 5.1.8.0 (2010/07/01) 新規追加 2090 * 2091 * @param clsClm ゼブラ模様指定カラム 2092 */ 2093 public void setBgColorClsClm( final String clsClm ) { 2094 bgColorClsClm = nval( getRequestParameter( clsClm ),bgColorClsClm ); 2095 } 2096 2097 /** 2098 * 【TAG】スクロールバー用のDIV要素を出力するかどうか[true/false]を指定します 2099 * (初期値:VIEW_USE_SCROLLBAR[={@og.value SystemData#VIEW_USE_SCROLLBAR}])。 2100 * 2101 * @og.tag 2102 * スクロールバー対応する為、テーブルの先頭に、DIV要素を出力します。 2103 * (初期値:ユーザー定数のVIEW_USE_SCROLLBAR[={@og.value SystemData#VIEW_USE_SCROLLBAR}])。 2104 * 2105 * @og.rev 3.5.6.3 (2004/07/12) 新規追加 2106 * 2107 * @param useBar スクロールバー用使用可否 [true:する/false:しない] 2108 * @see org.opengion.hayabusa.common.SystemData#VIEW_USE_SCROLLBAR 2109 */ 2110 public void setUseScrollBar( final String useBar ) { 2111 useScrollBar = nval( getRequestParameter( useBar ),useScrollBar ); 2112 } 2113 2114 /** 2115 * 【TAG】ヘッダー固定のスクロールバー使用時の最大行数を指定します 2116 * (初期値:VIEW_SCROLLBAR_MAX_ROW_SIZE[={@og.value SystemData#VIEW_SCROLLBAR_MAX_ROW_SIZE}])。 2117 * 2118 * @og.tag 2119 * ヘッダー固定のスクロールバーは、JavaScriptで処理しているため、 2120 * 大量のデータを読み取ると、非常に時間がかかったり、場合によっては 2121 * ブラウザがハングアップします。 2122 * そこで、ある表示件数以上の場合は、強制的にスクロールバーを 2123 * オフにします。 2124 * 指定以上のデータ件数を、表示する場合に、オフにします。 2125 * (初期値:VIEW_SCROLLBAR_MAX_ROW_SIZE[={@og.value SystemData#VIEW_SCROLLBAR_MAX_ROW_SIZE}]) 2126 * 2127 * @og.rev 6.2.4.0 (2015/05/15) 新規作成 2128 * 2129 * @param size スクロールバー使用時の最大行数 2130 * @see org.opengion.hayabusa.common.SystemData#VIEW_SCROLLBAR_MAX_ROW_SIZE 2131 */ 2132 public void setMaxScrollBarSize( final String size ) { 2133 maxScrollBarSize = nval( getRequestParameter( size ),maxScrollBarSize ); 2134 } 2135 2136 /** 2137 * 【TAG】viewLink や viewMarker の情報取り込みを制御する(初期値は、NEW,RENEW,REVIEW,RESET)。 2138 * 2139 * @og.tag 2140 * viewLink や viewMarker の情報取り込みは、command が、NEW,RENEW,REVIEW,RESET 2141 * の場合のみ行われています。 2142 * この属性で、"true" を指定すると、コマンドに無関係に取り込みます。 2143 * "false" の場合は、form にキャッシュしているリンク、マーカーを削除します。 2144 * 取り込み時に、viewLink や viewMarker オブジェクトが存在しない場合は、 2145 * 何もしません。これは、viewMarker オブジェクト自身がすでに設定済みの場合(VIEWなど) 2146 * NEXTやPREVでは、viewMarkerオブジェクトは、リクエスト変数に設定されない為です。 2147 * この場合は、登録しませんが、既存の viewMarkerオブジェクトを持っているはずなので、 2148 * なにも設定しなくても viewMarker は適用されます。 2149 * 初期値は、NEW,RENEW,REVIEW,RESET です。 2150 * 2151 * @og.rev 3.6.0.4 (2004/10/14) 新規追加 2152 * 2153 * @param load 情報取り込みするキー 2154 */ 2155 public void setLoadMarker( final String load ) { 2156 loadMarker = nval( getRequestParameter( load ),loadMarker ); 2157 } 2158 2159 /** 2160 * 【TAG】SEL_ROW機能[true:有効/false:無効]を指定します 2161 * (初期値:VIEW_USE_SELECTED_ROW[={@og.value SystemData#VIEW_USE_SELECTED_ROW}])。 2162 * 2163 * @og.tag 2164 * SEL_ROW機能は、戻るリンクから戻ったときや、登録したときに、選択していた 2165 * 行番号や、先にクリックされた行番号を返す機能で、SEL_ROW リクエストに設定された 2166 * 行がマーカーされます。この機能の有効(true)/無効(false)を指定します。 2167 * この属性で、"true" を指定すると、有効になります。 2168 * "false" の場合は、無効です。 2169 * (初期値:ユーザー定数のVIEW_USE_SELECTED_ROW[={@og.value SystemData#VIEW_USE_SELECTED_ROW}])。 2170 * 2171 * @og.rev 3.7.1.1 (2005/05/23) 新規追加 2172 * 2173 * @param selRow SEL_ROW機能有無 [true:有効/false:無効] 2174 * @see org.opengion.hayabusa.common.SystemData#VIEW_USE_SELECTED_ROW 2175 */ 2176 public void setUseSelectedRow( final String selRow ) { 2177 useSelectedRow = nval( getRequestParameter( selRow ),useSelectedRow ); 2178 } 2179 2180 /** 2181 * 【TAG】SEL_ROW使用時の選択行色変更[true:有効/false:無効]を指定します 2182 * (初期値:VIEW_USE_SELROW_COLOR[={@og.value SystemData#VIEW_USE_SELROW_COLOR}])。 2183 * 2184 * @og.tag 2185 * SEL_ROW機能は、現在選択されている行まで、スクロールする機能ですが、そのとき、 2186 * 選択行にマーカーするかどうかを、指定します。 2187 * この属性で、"true" を指定すると、有効になります。 2188 * "false" の場合は、無効です。 2189 * (初期値:ユーザー定数のVIEW_USE_SELROW_COLOR[={@og.value SystemData#VIEW_USE_SELROW_COLOR}])。 2190 * 2191 * @og.rev 3.7.1.1 (2005/05/31) 新規追加 2192 * 2193 * @param selRowColor SEL_ROW選択行色変更 [true:有効/false:無効] 2194 * @see org.opengion.hayabusa.common.SystemData#VIEW_USE_SELROW_COLOR 2195 */ 2196 public void setUseSelRowColor( final String selRowColor ) { 2197 useSelRowColor = nval( getRequestParameter( selRowColor ),useSelRowColor ); 2198 } 2199 2200 /** 2201 * 【TAG】 処理時間やページサイズなどの情報出力[true:有効/false:無効]を指定します(初期値:true)。 2202 * 2203 * @og.tag 2204 * ViewForm で、CustomData などの 非HTML表示ビューを使用する場合、 2205 * 最後に、処理時間とページサイズ(NEXT時に使用)などの情報を、hidden で 2206 * 出力していますが、これを制御するフラグをセットします。 2207 * true(有効)にすると、これらのHTMLが出力されます。false にすると、出力されません。 2208 * 初期値は、true(有効) です。 2209 * 2210 * @og.rev 3.7.1.1 (2005/05/23) 新規追加 2211 * 2212 * @param useTag 情報出力の有効/無効 [true:有効/false:無効] 2213 */ 2214 public void setUseAfterHtmlTag( final String useTag ) { 2215 useAfterHtmlTag = nval( getRequestParameter( useTag ),useAfterHtmlTag ); 2216 } 2217 2218 /** 2219 * 【TAG】設定値に "_" が含まれている場合にレンデラーを使用するカラムをCSV形式で指定します。 2220 * 2221 * @og.tag 2222 * これは、従来の カラム定義の WRITABLE エディターと同等の働きを行うように 2223 * カラム属性を指定します。 2224 * WRITABLE エディターは、設定値にアンダーバー "_" が含まれている場合に、 2225 * その値を書込み禁止にする機能です。これは、エディター自身が値を判断して 2226 * 書き込み許可か禁止かを判断しています。 2227 * この動きを汎用的にするため、指定のカラムをCSV形式(CSV)で指定 2228 * することにより、レンデラーとエディターを設定値によって動的に切り替える 2229 * 機能を実現します。 2230 * その場合、表示/編集ともに、先頭のアンダーバーは削除されます。 2231 * また、全カラムについて、有効にする場合は、writableControl="*" を設定します。 2232 * 2233 * @og.rev 3.8.0.9 (2005/10/17) 新規追加 2234 * 2235 * @param wrtCtrl 書込制御カラム (CSV形式) 2236 */ 2237 public void setWritableControl( final String wrtCtrl ) { 2238 writableControl = nval( getRequestParameter( wrtCtrl ),writableControl ); 2239 } 2240 2241 /** 2242 * 【TAG】HILIGHT_ROW機能[true:有効/false:無効]を指定します 2243 * (初期値:VIEW_USE_HILIGHT_ROW[={@og.value SystemData#VIEW_USE_HILIGHT_ROW}])。 2244 * 2245 * @og.tag 2246 * HILIGHT_ROW機能は、チェックボックスやラジオボタンで行選択した際に、どの行が選択されたか 2247 * 判るように行のハイライト表示を行う機能です。 2248 * さらに、行の任意の箇所をクリックしても、チェックが入り、ハイライト表示されます。 2249 * この属性で、"true" を指定すると、有効になります。 2250 * "false" の場合は、無効です。 2251 * (初期値:ユーザー定数のVIEW_USE_HILIGHT_ROW[={@og.value SystemData#VIEW_USE_HILIGHT_ROW}])。 2252 * 2253 * @og.rev 3.8.6.0 (2006/09/29) HILIGHT_ROW機能の有効/無効を指定します。 2254 * 2255 * @param hilightRow HILIGHT_ROW有無 [true:有効/false:無効] 2256 * @see org.opengion.hayabusa.common.SystemData#VIEW_USE_HILIGHT_ROW 2257 */ 2258 public void setUseHilightRow( final String hilightRow ) { 2259 useHilightRow = nval( getRequestParameter( hilightRow ),useHilightRow ); 2260 } 2261 2262 /** 2263 * 【TAG】ogPopup で検索結果の値を返すキーを、CSV形式で指定します。 2264 * 2265 * @og.tag 2266 * popup の検索結果を返す画面で、結果のラジオボタンにイベントセットします。 2267 * この場合、オープンもとのwindow に値を返しますが、そのキーをCSV形式で 2268 * 指定します。 2269 * なお、このメソッドは、一覧表示(HTMLTable)関係のビューのみでサポートして 2270 * いますが、チェックメソッドの関係で、それ以外のビューに適用しても素通り 2271 * するようにします。(エラーにしません) 2272 * 2273 * @og.rev 3.8.6.1 (2006/10/20) 新規追加 2274 * 2275 * @param rtnKeys ポップアップ戻りキー (CSV形式) 2276 */ 2277 public void setPopupReturnKeys( final String rtnKeys ) { 2278 popupReturnKeys = nval( getRequestParameter( rtnKeys ),popupReturnKeys ); 2279 } 2280 2281 /** 2282 * 【TAG】table要素に対して class 属性を設定します(初期値:viewTable)。 2283 * 2284 * @og.tag 2285 * Javaの言語使用上、class で作成できないため、代用として 2286 * clazz を使用している。 2287 * html で作成される属性は、 class で作成される。 2288 * 初期値は、"viewTable" です。 2289 * 2290 * @og.rev 4.0.0.0 (2007/04/16) 新規追加 2291 * 2292 * @param cls class属性 2293 */ 2294 public void setClazz( final String cls ) { 2295 clazz = nval( getRequestParameter( cls ),clazz ); 2296 } 2297 2298 /** 2299 * 【TAG】ビューの高さを指定します。 2300 * 2301 * @og.tag 2302 * id=posDivのDIV要素に高さを指定します。 2303 * javascriptからこの高さを見てビューの高さを決定します。 2304 * 単位も指定して下さい。 2305 * 2306 * @og.rev 4.2.0.0 (2008/03/18) 新規追加 2307 * 2308 * @param high ビューの高さ 2309 */ 2310 public void setHeight( final String high ) { 2311 height = nval( getRequestParameter( high ), height ); 2312 } 2313 2314 /** 2315 * 【TAG】ビューの幅を指定します。 2316 * 2317 * @og.tag 2318 * id=posDivのDIV要素に幅を指定します。 2319 * javascriptからこの値を見てビューの幅を決定します。 2320 * 単位も指定して下さい。(%指定推奨) 2321 * 2322 * @og.rev 4.2.0.0 (2008/03/18) 新規追加 2323 * 2324 * @param wide 指定するビューの幅 2325 */ 2326 public void setWidth( final String wide ) { 2327 width = nval( getRequestParameter( wide ), width ); 2328 } 2329 2330 /** 2331 * 【TAG】ファイルダウンロード時の抜出カラム名(CSV形式)を指定します。 2332 * 2333 * @og.tag 2334 * fileUDのファイル抜出時のカラムをカンマ形式で指定します。 2335 * 2336 * @og.rev 4.3.0.0 (2008/07/04) 新規追加 2337 * 2338 * @param dwnClms 抜出カラム名 (CSV形式) 2339 */ 2340 public void setFileDwnClms( final String dwnClms ) { 2341 fileDwnClms = nval( getRequestParameter( dwnClms ), fileDwnClms ); 2342 } 2343 2344 /** 2345 * 【TAG】編集行のみを表示するかを指定します(初期値:false)。 2346 * 2347 * @og.tag 2348 * 編集行のみを表示するかを指定します。trueがセットされた場合、編集行(改廃Cがついている行) 2349 * のみが出力されます。 2350 * 2351 * @og.rev 4.3.1.0 (2008/09/08) 2352 * 2353 * @param sne 編集行のみ出力 [true:編集行のみ/false:全行] 2354 */ 2355 public void setSkipNoEdit( final String sne ) { 2356 skipNoEdit = nval( getRequestParameter( sne ), skipNoEdit ); 2357 } 2358 2359 /** 2360 * 【TAG】(通常は使いません)画面遷移を行わない形式の登録方法を使用するかを指定します。 2361 * 2362 * @og.tag 2363 * 画面遷移なしの登録を行うかどうかを指定します。 2364 * trueが指定された場合、HTML出力時に、各行に対して、行番号と改廃Cが属性情報として付加されます。 2365 * ここで出力された情報を元に、JavaScriptの入れ替え処理を行います。 2366 * 2367 * この値は、og:headタグで設定値、または前画面からの値を継承するため、通常、この属性ではセットしません。 2368 * 2369 * @og.rev 4.3.3.0 (2008/10/01) 新規追加 2370 * @og.rev 5.1.3.0 (2010/02/01) noTransition、ajaxSubmitのコントロールは、requestで行う。 2371 * 2372 * @param noTrnstn 画面遷移なし登録 [true:画面遷移なし登録/false:通常登録] 2373 */ 2374 public void setNoTransition( final String noTrnstn ) { 2375 setNoTransitionRequest( nval( getRequestParameter( noTrnstn ), isNoTransitionRequest() ) ); 2376 } 2377 2378 /** 2379 * 【TAG】選択行ハイライトの制御をチェックボックスのみで有効にするかを指定します 2380 * (初期値:VIEW_USE_HILIGHT_CHECK_ONLY[={@og.value SystemData#VIEW_USE_HILIGHT_CHECK_ONLY}])。 2381 * 2382 * @og.tag 2383 * 選択行ハイライトの制御をチェックボックスのみで有効にするかを指定します。 2384 * trueの場合、チェックボックスのみで有効になります。 2385 * falseの場合、行全体の各要素で有効になります。 2386 * trueにした場合、チェックボックスが存在しない行に対しては、ハイライトすることはできません。 2387 * (初期値:ユーザー定数のVIEW_USE_HILIGHT_CHECK_ONLY[={@og.value SystemData#VIEW_USE_HILIGHT_CHECK_ONLY}])。 2388 * 2389 * @og.rev 4.3.7.0 (2009/06/01) 新規追加 2390 * 2391 * @param hiCkOnly 選択行ハイライト制御 [true:チェックボックスのみ/false:行全体] 2392 * @see org.opengion.hayabusa.common.SystemData#VIEW_USE_HILIGHT_CHECK_ONLY 2393 */ 2394 public void setUseHilightCheckOnly( final String hiCkOnly ) { 2395 isHiRowCheckOnly = nval( getRequestParameter( hiCkOnly ), isHiRowCheckOnly ); // 6.0.2.5 (2014/10/31) refactoring 2396 } 2397 2398 /** 2399 * 【TAG】選択行のハイライト表示を行った場合に、行選択でRadioボタンにclickイベントを発行させるかどうかを指定します 2400 * (初期値:VIEW_USE_HILIGHT_RADIO_CLICK[={@og.value SystemData#VIEW_USE_HILIGHT_RADIO_CLICK}])。 2401 * 2402 * @og.tag 2403 * trueの場合、clickイベントを発行させます。 2404 * falseの場合、従来通り、ハイライト表示でラジオのチェックは入りますが、イベントは発行されません。 2405 * 互換性を考えれば、false ですが、POPUP系で、行選択してしまうと、選択できなくなるため、 2406 * 行選択で、即POPUPが閉じる true にしておきます。 2407 * (初期値:ユーザー定数のVIEW_USE_HILIGHT_RADIO_CLICK[={@og.value SystemData#VIEW_USE_HILIGHT_RADIO_CLICK}])。 2408 * 2409 * @og.rev 6.2.2.0 (2015/03/27) hilightRow で、行選択時にイベント発行可否を指定できるようにする。 2410 * 2411 * @param useClick 行選択でRadioボタンのclickイベント [true:発行する/false:発行しない] 2412 * @see org.opengion.hayabusa.common.SystemData#VIEW_USE_HILIGHT_RADIO_CLICK 2413 */ 2414 public void setUseHilightRadioClick( final String useClick ) { 2415 isHiRadioClick = nval( getRequestParameter( useClick ), isHiRadioClick ); // 6.0.2.5 (2014/10/31) refactoring 2416 } 2417 2418 /** 2419 * 【TAG】一括入力カラムのアシスト機能を利用するカラム名を、CSV形式で与えます。 2420 * 2421 * @og.tag 2422 * これは、カラムの書き込み時に、一括入力可能なカラムをヘッダーに表示し、 2423 * 一括登録できる機能を提供します。 2424 * この機能は、jsp/common/bulkSet.js JavaScript とともに提供されます。 2425 * IE については、クリップボードも利用できます。Ctrl-C と Ctrl-V でそれぞれ 2426 * 該当列のカラムの値の取り出しと書き込みが可能になります。 2427 * (プルダウンの場合はオプションに上記が追加されます) 2428 * 入力欄のダブルクリックはCtrl-Cと同じ動作となります。 2429 * "*" を指定すると、すべてのカラムを(columnBulkSet)指定したことになります。 2430 * "-" を指定すると、すべてのカラムを(columnBulkSet)除外したことになります。 2431 * 2432 * システムリソースで、VIEW_USE_DEFAULT_BULKSET を true に設定すると、初期値が "*" 2433 * になりますので、個別の view に設定しなくてもこの機能が使用できるようになります。 2434 * 2435 * この機能は一括入力の手間削減が目的なので、selectedType が radio の場合は、 2436 * この機能は無効になります。 2437 * 2438 * @og.rev 5.2.1.0 (2010/10/01) 新規作成 2439 * @og.rev 5.4.4.0 (2012/02/01) コメント追加 2440 * 2441 * @param columnName 一括入力カラム (CST形式) (例:"OYA,KO,HJO,SU,DYSET,DYUPD") 2442 */ 2443 public void setColumnBulkSet( final String columnName ) { 2444 columnBulkSet = nval( getRequestParameter(columnName),columnBulkSet ); 2445 } 2446 2447 /** 2448 * 【TAG】処理時間を表示する TimeView を表示するかどうか[true:する/false:しない]を指定します 2449 * (初期値:VIEW_USE_TIMEBAR[={@og.value SystemData#VIEW_USE_TIMEBAR}])。 2450 * 2451 * @og.tag 2452 * true に設定すると、処理時間を表示するバーイメージが表示されます。 2453 * これは、DB検索、APサーバー処理、画面表示の各処理時間をバーイメージで 2454 * 表示させる機能です。処理時間の目安になります。 2455 * (初期値:VIEW_USE_TIMEBAR[={@og.value SystemData#VIEW_USE_TIMEBAR}])。 2456 * 2457 * @og.rev 6.3.6.0 (2015/08/16) useTimeView の初期値を、VIEW_USE_TIMEBAR にする。 2458 * 2459 * @param flag 処理時間を表示 [true:する/false:しない] 2460 */ 2461 public void setUseTimeView( final String flag ) { 2462 useTimeView = nval( getRequestParameter( flag ),useTimeView ); 2463 } 2464 2465 /** 2466 * タグの名称を、返します。 2467 * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。 2468 * 2469 * @og.rev 4.0.0.0 (2005/01/31) 新規追加 2470 * 2471 * @return タグの名称 2472 * @og.rtnNotNull 2473 */ 2474 @Override 2475 protected String getTagName() { 2476 return "view" ; 2477 } 2478 2479 /** 2480 * seqClmTableを使用するかどうかをチェックします 2481 * 2482 * ここではtableId,scope,項目名などで厳密にチェックを行い、これらが元の情報と合致しない場合は、 2483 * ViewFormTypeの置き換えを行わないようにします。 2484 * 2485 * @og.rev 5.1.6.0 (2010/05/01) 新規追加 2486 * @og.rev 5.3.6.0 (2011/06/01) Edit機能見直しによりメソッド名変更 2487 * @og.rev 5.7.7.3 (2014/06/27) カラムが存在しない場合の挙動変更 2488 * @og.rev 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 2489 * @og.rev 6.2.4.1 (2015/05/22) カラムが DBTableModel に存在しない場合、return から continue に変更 2490 * 2491 * @param userViewClms 表示カラム 2492 */ 2493 private void makeEditTable( final String userViewClms ) { 2494 2495 // 1Queryに対して複数Viewがある場合(左右分割など)、Viewの各項目定義が'|'で分割されてセットされています。 2496 final int vwCnt = nval( (String)getRequestAttribute( "h_vwCnt" ), 0 ); 2497 final String[] clmGroup = StringUtil.csv2Array( userViewClms, '|' ); 2498 if( clmGroup.length > vwCnt ) { 2499 // 6.0.2.4 (2014/10/17) カラムの存在チェックと、取り除きを同時に行います。 2500 // AAA,!BBB,CCC,DDD,!EEE から!がついたカラムのみを取り除く(!がある項目は非表示) 2501 final String[] clms = StringUtil.csv2Array( clmGroup[vwCnt] ); 2502 final StringBuilder buf = new StringBuilder( BUFFER_MIDDLE ); 2503 for( int i=0; i<clms.length; i++ ) { 2504 final String clm = clms[i]; 2505 // !がついたカラムは、スルーします。 2506 if( StringUtil.startsChar( clm , '!' ) ) { continue; } // 6.2.0.0 (2015/02/27) 1文字 String.startsWith 2507 if( table.getColumnNo( clm, false ) < 0 ) { 2508 continue; // 6.2.4.1 (2015/05/22) カラムが DBTableModel に存在しない 2509 } 2510 else { 2511 if( buf.length() > 0 ) { buf.append( ',' ); } // 最初以外は、カンマを追加する。 // 6.0.2.5 (2014/10/31) char を append する。 2512 buf.append( clm ); 2513 } 2514 } 2515 // 行カウントカラムを表示する。 2516 if( table.getColumnNo( "rowCount", false ) >= 0 ) { 2517 buf.append( ",rowCount" ); 2518 } 2519 clmSeqDisplay = buf.toString(); // 6.0.2.4 (2014/10/17) 2520 setRequestAttribute( "h_vwCnt", String.valueOf( vwCnt+1 ) ); 2521 } 2522 } 2523 2524 /** 2525 * Viewで表示した項目をDBLastSqlにセットします。 2526 * 2527 * ここではtableId,scopeなどで厳密にチェックを行い、これらが元の情報と合致しない場合は、 2528 * DBLastSqlへのセットを行わないようにします。 2529 * 2530 * @og.rev 5.1.6.0 (2010/05/01) 新規追加 2531 * @og.rev 5.3.9.0 (2011/09/01) ヘッダーソートを行った場合、編集対象カラムが正しく表示されないバグを修正 2532 * @og.rev 6.0.2.4 (2014/10/17) Edit機能で、JSPソース変更時の対応 2533 * 2534 * @param lastSql DBLastSqlオブジェクト 2535 */ 2536 private void setViewClms( final DBLastSql lastSql ) { 2537 // 4.3.0.0 (2008/07/04) fileUD 対応。抜き出すカラムを指定します。 2538 final String guikey = getGUIInfoAttri( "KEY" ); 2539 if( lastSql.isGuiMatch( guikey ) && lastSql.isTableMatch( tableId, getScope() ) && lastSql.isViewEditable() ) { 2540 // 5.1.6.0 (2010/05/01) fileDwnClmsが指定されない場合は、Viewで表示されたカラムをセット 2541 if( form.isEditable() ) { 2542 // 5.3.9.0 (2011/09/01) リクエストに対して初めて処理する場合に対象カラムを一旦クリアする。 2543 final boolean vwBln = nval( (String)getRequestAttribute( "h_vwBln" ), false ); 2544 if( !vwBln ) { 2545 lastSql.setViewClmNames( null ); 2546 lastSql.setClmNames( null ); 2547 setRequestAttribute( "h_vwBln", "true" ); 2548 } 2549 2550 String clmNames = lastSql.getViewClmNames(); 2551 if( clmNames == null || clmNames.isEmpty() ) { 2552 clmNames = nval( fileDwnClms, form.getViewClms() ); 2553 } 2554 else { 2555 // 1Queryに対して複数Viewがある場合(左右分割など)、Viewの各項目定義が'|'で分割されてセットします。 2556 clmNames += "|" + nval( fileDwnClms, form.getViewClms() ); 2557 } 2558 lastSql.setViewClmNames( clmNames ); 2559 lastSql.setClmNames( clmNames.replace( "|", "," ) ); 2560 } 2561 else { 2562 lastSql.setViewNotEditable(); 2563 } 2564 setSessionAttribute( HybsSystem.DB_LAST_SQL_KEY,lastSql ); 2565 } 2566 } 2567 2568 /** 2569 * 【TAG】(通常は使いません)Viewに関する情報をセッションに情報を登録するかどうかを指定します(初期値:true)。 2570 * 2571 * @og.tag 2572 * 同一画面IDで、複数のViewを表示する場合に利用します。 2573 * View関連の情報をセッションに登録し利用していますが、複数のViewが存在する場合に前の情報が上書きされてしまいます。 2574 * 複数のViewを利用する際に、メイン以外のViewの値をfalseに指定する事でセッションへの保存をしません。 2575 * (QueryTagのmainTransも同時に設定するか検討してください) 2576 * 2577 * 現段階では、セッション保存抑制を行う値はstartNoのみです。 2578 * 2579 * @og.rev 5.7.6.1 (2010/05/09) 新規作成 2580 * 2581 * @param flag メインView指定 [true:メイン/false:その他] 2582 */ 2583 public void setMainView( final String flag ) { 2584 isMainView = nval( getRequestParameter( flag ),isMainView ); 2585 } 2586 2587 /** 2588 * このオブジェクトの文字列表現を返します。 2589 * 基本的にデバッグ目的に使用します。 2590 * 2591 * @return このクラスの文字列表現 2592 * @og.rtnNotNull 2593 */ 2594 @Override 2595 public String toString() { 2596 return ToString.title( this.getClass().getName() ) 2597 .println( "VERSION" ,VERSION ) 2598 .println( "tableId" ,tableId ) 2599 .println( "viewFormId" ,viewFormId ) 2600 .println( "viewFormType" ,viewFormType ) 2601 .println( "viewLinkId" ,viewLinkId ) 2602 .println( "viewMarkerId" ,viewMarkerId ) 2603 .println( "command" ,command ) 2604 .println( "startNo" ,startNo ) 2605 .println( "tempStartNo" ,tempStartNo ) 2606 .println( "pageSize" ,pageSize ) 2607 .println( "pagePlus" ,pagePlus ) 2608 .println( "columnWritable" ,columnWritable ) 2609 .println( "noWritable" ,noWritable ) 2610 .println( "columnDisplay" ,columnDisplay ) 2611 .println( "clmSeqDisplay" ,clmSeqDisplay ) 2612 .println( "noDisplay" ,noDisplay ) 2613 .println( "columnGroup" ,columnGroup ) 2614 .println( "noMessage" ,noMessage ) 2615 .println( "writable" ,writable ) 2616 .println( "checked" ,checked ) 2617 .println( "skip" ,skip ) 2618 .println( "rowspan" ,rowspan ) 2619 .println( "selectedType" ,selectedType ) 2620 .println( "numberType" ,numberType ) 2621 .println( "optTypeAttri" ,optTypeAttri ) 2622 .println( "backLinkCount" ,backLinkCount ) 2623 .println( "headerSkipCount" ,headerSkipCount ) 2624 .println( "bodyString" ,bodyString ) 2625 .println( "useCheckControl" ,useCheckControl ) 2626 .println( "useTableSorter" ,useTableSorter ) 2627 .println( "useParam" ,useParam ) 2628 .println( "useConsistency" ,useConsistency ) 2629 .println( "bgColorCycle" ,bgColorCycle ) 2630 .println( "useScrollBar" ,useScrollBar ) 2631 .println( "sortKeys" ,sortKeys ) 2632 .println( "loadMarker" ,loadMarker ) 2633 .println( "useSelectedRow" ,useSelectedRow ) 2634 .println( "useSelRowColor" ,useSelRowColor ) 2635 .println( "useAfterHtmlTag" ,useAfterHtmlTag ) 2636 .println( "writableControl" ,writableControl ) 2637 .println( "hight" ,height ) 2638 .println( "width" ,width ) 2639 .println( "skipNoEdit" ,skipNoEdit ) 2640 .println( "noTransition" ,noTransition ) 2641 .println( "useHilightCheckOnly",isHiRowCheckOnly) // 6.0.2.5 (2014/10/31) refactoring 2642 .println( "Other..." ,getAttributes().getAttribute() ) 2643 .fixForm().toString() ; 2644 } 2645}