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 org.opengion.hayabusa.common.HybsSystem; 019import org.opengion.hayabusa.common.HybsSystemException; 020import org.opengion.hayabusa.db.DBColumn; 021import org.opengion.hayabusa.db.DBColumnConfig; 022import org.opengion.hayabusa.resource.CodeData; 023import org.opengion.hayabusa.resource.RoleMode; 024import org.opengion.fukurou.util.Attributes; 025import org.opengion.fukurou.util.XHTMLTag; 026import org.opengion.fukurou.util.StringUtil; 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 static org.opengion.fukurou.util.StringUtil.nval; 030 031import java.util.Set; // 6.4.3.4 (2016/03/11) 032 033/** 034 * カラムリソースに基づいた、入力フィールドなどを作成するHTML拡張タグです。 035 * 036 * name 属性に カラムリソースのキーを与えることにより、指定した表示形式にて画面に表示します。 037 * column タグは、リソースの設定が反映されるため、アプリケーションを修正せずに、 038 * 機能拡張することが可能です。たとえば、テキストフィールド入力に設定していたカラムを、 039 * プルダウンメニューに即座に変更可能です。 040 * カラム定義でロールが指定されている場合、ログインユーザーでアクセス許可がない場合は 041 * カラムは表示されません。 042 * カラムリソースに存在しない場合や特殊用途に使用する場合は、inputタグを使用してください。 043 * 044 * @og.formSample 045 * ●形式:<og:column name=… value=… /> 046 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 047 * 048 * ●Tag定義: 049 * <og:column 050 * name ○【TAG】カラムの名前を指定します(必須)。 051 * value 【TAG】設定値を指定します 052 * defaultVal 【TAG】value属性に値がセットされていないときに、初期値をセットします 053 * td 【TAG】テーブル形式の <td> タグを使用するかどうか[yes/no/false]を指定します (初期値:yes) 054 * addNoValue 【TAG】セレクトメニューの場合、値なしのOptionを含めるかどうか[true/false]を指定します (初期値:true) 055 * addKeyLabel 【TAG】セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を指定します (初期値:null) 056 * lbl 【TAG】ラベルリソースのラベルIDを指定します 057 * must 【TAG】必須入力を表す色に変えるかどうか[true/false]を指定します (初期値:false) 058 * mustAny 【TAG】選択必須入力(どれかひとつ必須)を表す色[true/mustAny/その他]を指定します (初期値:無指定) 059 * useMustHidden 【TAG】必須の自動チェック用Hiddenを出力するかどうか[true/false]を指定します (初期値:true) 060 * aimai 【TAG】曖昧検索可能フィールドとして、曖昧検索方法を指定します (初期値:null) 061 * writable 【TAG】書き込みタイプかどうか[true/false]を指定します (初期値:true) 062 * colspan 【HTML】フィールド部分の colspan を指定します 063 * rowspan 【HTML】ラベル、フィールド共に rowspan を指定します 064 * id 【HTML】要素に対して固有の名前(id)をつける場合に設定します 065 * size 【HTML】カラムの入力枠サイズ(横幅)を文字数でセットします(入力文字制限ではありません) 066 * viewSize 【TAG】カラムの表示サイズ(横幅)を文字数でセットします。 067 * maxlength 【HTML】最大入力文字数を指定します(入力可能文字数で、バイト数ではありません) 068 * renderer 【TAG】カラムの表示用レンデラー({@og.doc03Link renderer Renderer_****})をセットします 069 * editor 【TAG】カラムの編集用エディター({@og.doc03Link editor Editor_****})をセットします 070 * dbType 【TAG】DBタイプ({@og.doc03Link dbType DBType_****})をセットします 071 * optionAttributes 【TAG】JavaScript などの HTML基本タグ以外の属性を、そのままタグとして使用します 072 * // useDefaultPropertieVal 【廃止】カラムリソースの初期値を使うかどうか[true/false]を指定します (初期値:false) 8.4.3.0 (2023/03/31) Delete 073 * nextForm 【TAG】入力カーソルを、指定されたname属性のフィールドへ自動的に移動させます 074 * useRequestValue 【TAG】value が null の場合に、name 属性から Request情報 を適用するかどうかを指定します (初期値:true) 075 * codeName 【TAG】コードセレクトのユニークキー(コード名称)をセットします 076 * codeList 【TAG】コードセレクトのサブセットとなるコードをCSV形式で指定します 077 * codeGroup 【TAG】コードセレクトのサブセットとなるグループを指定します 078 * codeKeyVal 【TAG】新しいコードセレクトを作成する為の「キー:ラベル キー:ラベル」の文字列を指定します 079 * useLblBody 【TAG】BODYに記述した内容で、ラベルを作成します 7.4.2.0 (2021/04/30) 080 * clazz 【HTML】要素に対して class 属性を設定します 081 * caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します (初期値:null) 082 * caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します (初期値:null) 083 * caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます (初期値:判定しない) 084 * caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます (初期値:判定しない) 085 * caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます (初期値:判定しない) 086 * lang 【HTML】要素の内容と他の属性値の言語(lang,xml:lang)を指定します 087 * dir 【HTML】文字表記の方向(dir)を指定します 088 * title 【HTML】要素に対する補足的情報(title)を設定します 089 * style 【HTML】この要素に対して適用させるスタイルシート(style)を設定します 090 * readonly 【HTML】その部品に対して変更が出来ないように(readonly)指定します(サーバーに送信される) 091 * disabled 【HTML】その部品に対して、選択や変更が出来ないように(disabled)指定します(サーバーに送信されない) 092 * tabindex 【HTML】タブの移動順(tabindex)を指定します(0 ~ 32767) 093 * accesskey 【HTML】アクセスキー(alt+キーで直接指定)を割り当てます 094 * language 【HTML】タグ内部で使用する言語コード[ja/en/zh/…]を指定します 095 * onClick 【HTML】JavaScriptのイベント onClick を設定します(例:onClick="renew('query.jsp','QUERY');") 096 * onChange 【HTML】JavaScriptのイベント onChange を設定します(例:onChange="renew('query.jsp','QUERY');") 097 * onBlur 【HTML】JavaScriptのイベント onBlur を設定します(例:onBlur="this.value=value.toUpperCase();") 098 * onFocus 【HTML】JavaScriptのイベント onFocus を設定します 099 * ondblClick 【HTML】JavaScriptのイベント ondblClick を設定します 100 * onMouseDown 【HTML】JavaScriptのイベント onMouseDown を設定します 101 * onMouseUp 【HTML】JavaScriptのイベント onMouseUp を設定します 102 * onMouseMove 【HTML】JavaScriptのイベント onMouseMove を設定します 103 * onMouseOut 【HTML】JavaScriptのイベント onMouseOut を設定します 104 * onMouseOver 【HTML】JavaScriptのイベント onMouseOver を設定します 105 * onSelect 【HTML】JavaScriptのイベント onSelect を設定します 106 * onKeydown 【HTML】JavaScriptのイベント onKeydown を設定します 107 * onKeypress 【HTML】JavaScriptのイベント onKeypress を設定します 108 * onKeyup 【HTML】JavaScriptのイベント onKeyup を設定します 109 * autocomplete 【HTML5】入力候補を提示して入力内容を自動補完する[on/off] (初期値はon) 110 * autofocus 【HTML5】指定した入力欄にカーソルが当たって自動的にフォーカスされます 111 * pattern 【HTML5】正規表現で入力値のパターンを指定します 112 * placeholder 【HTML5】入力欄に初期表示する内容を指定します 113 * required 【HTML5】入力必須を指定します 114 * list 【HTML5】ユーザーに入力候補として提案するデータリストの要素のid属性の値を指定します 115 * min 【HTML5】入力欄で入力できる最小値を指定します 116 * max 【HTML5】入力欄で入力できる最大値を指定します 117 * step 【HTML5】入力欄で刻むステップ値を指定する 118 * type 【HTML5】HTML5追加分[text/search/tel/url/email/datetime/date/month/week/time/datetime-local/number/range/color] 119 * roles 【TAG】ロールをセットします 120 * eventColumn 【TAG】イベントカラム(親カラム)セット 121 * eventValue 【TAG】イベントValueのSQL分 122 * eventURL 【TAG】イベントURLのセット 123 * eventCallback 【TAG】eventColumn実行後のcallbak関数指定 124 * param 【TAG】パラメータをセットします(eventColumn でDBMENUの場合は、select文を記述します) 125 * dbid 【TAG】(通常は使いません)データベースへ接続する場合のID (初期値:null) 126 * xssCheck 【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します (初期値:USE_XSS_CHECK[=true]) 127 * useSLabel 【TAG】MENU,DBMENUでSLABELを利用するかどうか[auto/true/false]を指定します (初期値:auto) 128 * help 【TAG】このカラムに対するヘルプファイルを指定します (初期値:null) 129 * useRealTimeCheck 【TAG】(通常は使いません)リアルタイムチェックを行うかどうか (初期値:true:行う) 5.9.32.2 (2018/05/18) 130 * useDateFeed 【TAG】日付送り戻し機能を有効にするかどうか[true:有効/false:無効]指定します (初期値:true) 8.1.2.3 (2022/05/20) 131 * useHidden 【TAG】隠しフィールドを作成するかどうか[true/false]指定します (初期値:false) 8.3.1.0 (2022/10/14) 132 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します (初期値:false) 133 * > ... Body ... 134 * </og:column> 135 * 136 * ●使用例 137 * <og:column name="PN" /> 編集種別がTextの場合は、テキストフィールドが表示されます。 138 * 通常はNAME属性を指定するだけです。 139 * <og:column name="CDC" /> 編集種別がMenuの場合は、メニューが表示されます。 140 * <og:column name="PN" value="syokichi" /> 初期値をセットするときはvalue属性を使います。 141 * <og:column name="PN" lbl="PNL" /> ラベルを変更するときはlbl属性を使います。 142 * <og:column name="CDC" /> カラムリソースからセレクトメニューも自動作成されます。 143 * <og:column name="CDC" addNoValue="false" /> NULL値を消すときはaddNoValue属性を使います。 144 * <og:column name="CDC" addNoValue="false" must="true" /> 属性は、複数組み合わせて使えます。 145 * <og:column name="PN" must="true" /> 色を変更するときはmust属性を使います。 146 * <og:column name="PN" td="false" /> 自動作成されるtdタグやラベルを外すときはtd属性を使います。 147 * <og:column name="PN" td="no" /> 自動作成されるtdタグを外し、ラベルとフィールドは残します。 148 * <og:column name="PN" writable="false" /> 非入力にするときはwritable属性を使います。 149 * <og:column name="PN" size="20" /> 強制的にSIZEの変更をするときはsize属性を使います。 150 * <og:column name="A" nextForm="B" /> 最大桁数入力後、フォーム B にフォーカスが移動します。 151 * <og:column name="B" /> 152 * 153 * BODY 部分に記述した値は、カラムフィールドの直後にセットされます。 154 * <og:column name="PN" > 155 * <og:button type="button" onclick="popup(・・・);return false;"> 156 * <og:message lbl="POPUP" comment="▼" /> 157 * </og:button> 158 * </og:column> 159 * 160 * eventColumnを利用すると、親カラムの変更に従って子カラムの内容を変える事が可能です。 161 * ・親子関係のプルダウンを作成する場合 162 * <og:column name="OYA" /> 163 * <og:column name="KO" eventColumn="OYA" param="SELECT ... WHERE COL = '{@OYA}'" /> 164 * 165 * ・親子関係の入力欄(親のデータで子をDBから検索)を作成する場合 166 * <og:column name="OYA" /> 167 * <og:column name="KO" eventColumn="OYA" param="SELECT A AS VALUE WHERE COL = {@OYA}" /> 168 * 169 * ・親子関係の要素をカスタム化されたJSPを利用して作成する場合 170 * 変更するカラムはJSPで記述されており、指定する事が可能です。 171 * <og:column name="OYA" /> 172 * <og:column name="KO" eventColumn="OYA" param="{@OYA}" eventURL="custom_makeColumn.jsp" /> 173 * 174 * @og.group 画面部品 175 * 176 * @version 4.0 177 * @author Kazuhiko Hasegawa 178 * @since JDK5.0, 179 */ 180public class ColumnTag extends HTMLTagSupport { 181 /** このプログラムのVERSION文字列を設定します。 {@value} */ 182 private static final String VERSION = "8.5.2.0 (2023/07/14)" ; 183 private static final long serialVersionUID = 852020230714L ; 184 185 // 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 186 private static final Set<String> TYPE_SET = new ArraySet<>( "text","search","tel","url","email","datetime","date","month","week","time","datetime-local","number","range","color" ); 187 private static final Set<String> TD_SET = new ArraySet<>( "yes" , "no" , "false" ); 188 189 // 8.4.3.0 (2023/03/31) システム定数 初期値を 使う:true / 使わない:false 190 private static final boolean USE_DEFVAL = HybsSystem.sysBool( "USE_DEFAULT_PROPERTIE_VALUE" ); 191 192 /** HTML_LABEL_SEPARATOR を boolean 変数として取得します。 */ 193 private final String CLM = HybsSystem.sysBool( "HTML_LABEL_SEPARATOR" ) ? ":" : "" ; // 4.0.0 (2005/01/31) 194 195 /** yes:<td> タグを使用 / false:フィールドのみ / no:ラベルとフィールド */ 196 private String tdFlag = "yes"; 197 /** 値なしのOptionをSelectに含めるかどうか */ 198 private boolean addNoValue = true; 199 /** キー:ラベル形式で表示するかどうか */ 200 private String addKeyLabel ; // 6.0.4.0 (2014/11/28) 201 /** カラムの名前 */ 202 private String name ; 203 /** 設定値 */ 204 private String value ; 205 /** 書き込み/ラベルを指定する */ 206 private boolean writable = true; // true で書き込み 207 /** value がセットされていないときの初期値 */ 208 private String defaultVal = ""; 209 // 2.1.0.0 (2002/10/11) useDefaultPropertieVal 属性を追加。 210 // 5.2.3.0 (2010/12/01) useDefaultPropertieVal 属性の初期値をシステム定数で定義 211 // properties ファイルの初期値を 使う:true / 使わない:false 212// private boolean useDefVal = HybsSystem.sysBool( "USE_DEFAULT_PROPERTIE_VALUE" ); // 8.4.3.0 (2023/03/31) Delete 213 214 /** colspan 属性 */ 215 private String colspan = ""; // 3.0.0.0 (2002/12/25) 216 /** rowspan 属性 */ 217 private String rowspan = ""; // 6.2.0.0 (2015/02/27) 218 /** nextForm 属性 */ 219 private String nextForm ; // 3.5.4.2 (2003/12/15) 220 221 /** value が null の場合に、リクエスト情報を設定します(初期値:true)。 */ 222 private boolean useRequestValue = true; // 3.5.4.9 (2004/02/25) 223 224 // 3.5.6.0 (2004/06/18) Attributes 経由でなく、直接 DBColumnConfig に設定します。 225 /** 入力枠サイズ(横幅) */ 226 private String fieldSize ; // 6.2.0.0 (2015/02/27) 227 /** 表示サイズ(横幅) */ 228 private String viewSize ; // 6.2.0.0 (2015/02/27) 229 /** 最大入力文字数 */ 230 private String maxlength ; 231 232 /** BODY 部分に記述した値は、カラムフィールドの直後にセットされます。 */ 233 private String body ; // 3.8.0.4 (2005/08/08) 234 /** コードセレクトのユニークキー */ 235 private String codeName ; // 3.8.0.6 (2005/09/12) 236 /** Codeリソースのサブセット */ 237 private String codeList ; // 5.1.9.0 (2010/08/01) 238 /** Codeリソースのサブセットとなるグループ */ 239 private String codeGroup ; // 5.1.9.0 (2010/08/01) 240 /** 新しいコードセレクトを作成する為の KEY:VAL 文字列 */ 241 private String codeKeyVal ; // 5.6.6.0 (2013/07/05) 242 /** BODYに記述した内容で、ラベルを作成します */ 243 private boolean useLblBody ; // 7.4.2.0 (2021/04/30) 244 245 // 4.0.0 (2007/05/30) カラム状態を動的に変更します。 246 /** カラムの表示用レンデラー */ 247 private String renderer ; 248 /** カラムの編集用エディター */ 249 private String editor ; 250 /** カラムのDBタイプ */ 251 private String dbType ; 252 253 /** 親カラムの指定 */ 254 private String eventColumn ; // 4.3.6.0 (2009/04/01) 255 /** イベントValueのSQL分 */ 256 private String eventValue ; // 6.3.3.0 (2015/07/25) 257 /** eventColumnで飛ばすURL */ 258 private String eventURL ; // 4.3.6.0 (2009/04/01) 259 /** パラメータを変更可能にする */ 260 private String param ; // 4.3.6.0 (2009/04/01) 261 /** データベースへ接続する場合のID */ 262 private String dbid ; // 5.7.6.2 (2014/05/16) 263 /** カラムに対するヘルプファイル */ 264 private String help ; // 6.3.2.0 (2015/07/10) 265 266 /** XSS対策 */ 267 private boolean xssCheck = HybsSystem.sysBool( "USE_XSS_CHECK" ); // 5.1.7.0 (2010/06/01) 268 269 /** 短縮ラベルの利用有無 */ 270 private String useSLabel = "auto"; // 5.5.1.0 (2012/04/03) 271 /** 日付送り戻し機能の有効/無効 */ 272 private boolean useDateFeed = true; // 8.1.2.3 (2022/05/20) 273 /** 隠しフィールドの作成有無 */ 274 private boolean useHidden ; // 8.3.1.0 (2022/10/14) 275 276 /** 277 * デフォルトコンストラクター 278 * 279 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 280 */ 281 public ColumnTag() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 282 283 /** 284 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 285 * 286 * @og.rev 3.8.0.4 (2005/08/08) 新規追加(BODY部の評価) 287 * @og.rev 5.1.7.0 (2010/06/01) command=RENEWの場合はdefaultValを無視する。 288 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 289 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加。 290 * @og.rev 6.3.4.0 (2015/08/01) eventValue のSQL処理は、jsp/common/eventColumnMaker.jsp で行う。 291 * @og.rev 6.4.8.1 (2016/07/02) xssCheckを、doStartTag に移動 292 * 293 * @return 後続処理の指示( EVAL_BODY_BUFFERED ) 294 */ 295 @Override 296 public int doStartTag() { 297 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 298 if( useTag() ) { 299 // 5.9.10.0 (2016/07/01) doAfterBodyから移動 300 useXssCheck( xssCheck ); 301 302 // makeTag() より移動 303 if( value == null && useRequestValue ) { // 3.5.4.9 (2004/02/25) 304 // 5.1.7.0 (2010/06/01) command=RENEWの場合はdefaultValを無視する。 305 final String cmd = pageContext.getRequest().getParameter( "command" ); 306 if( "RENEW".equals( cmd ) ) { 307 value = getRequestValue( name ); 308 } 309 else { 310 value = nval( getRequestValue( name ),defaultVal ); 311 } 312 } 313 314 return EVAL_BODY_BUFFERED ; // Body を評価する。( extends BodyTagSupport 時) 315 } 316 return SKIP_BODY ; // Body を評価しない 317 } 318 319 /** 320 * Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。 321 * 322 * @og.rev 3.8.0.4 (2005/08/08) 新規追加(BODY部の評価) 323 * @og.rev 5.1.7.0 (2010/06/01) XSS解除対応 324 * @og.rev 6.4.8.1 (2016/07/02) xssCheckを、doStartTag に移動 325 * 326 * @return 後続処理の指示(SKIP_BODY) 327 */ 328 @Override 329 public int doAfterBody() { 330 331 body = getBodyString(); 332 return SKIP_BODY ; 333 } 334 335 /** 336 * タグリブオブジェクトをリリースします。 337 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 338 * 339 * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 340 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で指定するように変更 341 * @og.rev 3.0.0.0 (2002/12/25) colspan 属性を追加。 342 * @og.rev 3.0.1.4 (2003/03/17) colspan 属性の制御方法を変更 343 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 344 * @og.rev 3.5.4.2 (2003/12/15) nextForm 属性を追加。 345 * @og.rev 3.5.4.9 (2004/02/25) useRequestValue 属性を追加。 346 * @og.rev 3.5.6.0 (2004/06/18) Attributes 経由でなく、直接 DBColumnConfig に設定します。 347 * @og.rev 3.8.0.4 (2005/08/08) body , useBody 属性を追加。 348 * @og.rev 3.8.0.6 (2005/09/12) codeName 属性を追加。 349 * @og.rev 4.1.2.1 (2008/03/13) must , mustAny 属性を自動化します。 350 * @og.rev 5.1.7.0 (2010/06/01) XSS解除対応 351 * @og.rev 5.1.9.0 (2010/08/01) codeList , codeGroup属性を追加。(Codeリソースのサブセットとなるグループ) 352 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属性の処理を、HTMLTagSupport に移します 353 * @og.rev 5.2.3.0 (2010/12/01) useDefaultPropertieVal 属性の初期値をシステム定数で定義 354 * @og.rev 5.6.6.0 (2013/07/05) codeKeyVal 属性を追加 355 * @og.rev 5.7.6.2 (2014/05/16) dbid 属性を追加 356 * @og.rev 6.0.4.0 (2014/11/28) addKeyLabel 属性を追加 357 * @og.rev 6.2.0.0 (2015/02/27) rowspan 属性を追加 358 * @og.rev 6.2.0.0 (2015/02/27) viewSize 属性の追加 359 * @og.rev 6.3.2.0 (2015/07/10) help 属性の追加 360 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 361 * @og.rev 7.4.2.0 (2021/04/30) useLblBodyをtrueにすると、BODYに記述した内容で、ラベルを作成します 362 * @og.rev 8.1.2.3 (2022/05/20) 日付送り戻し不具合対応(useDateFeed 属性追加) 363 * @og.rev 8.3.1.0 (2022/10/14) 隠しフィールドの作成対応(useHidden 属性追加) 364 * @og.rev 8.4.3.0 (2023/03/31) useDefaultPropertieVal 属性廃止 365 */ 366 @Override 367 protected void release2() { 368 super.release2(); 369 tdFlag = "yes"; // table形式の <td> タグを使用するかどうか 370 addNoValue = true; // 値なしのOptionをSelectに含めるかどうか 371 addKeyLabel = null; // 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか 372 name = null; 373 value = null; 374 writable = true; // 書き込み/ラベルを指定する。(true で書き込み) 375 defaultVal = ""; // value がセットされていないときの初期値 376// useDefVal = HybsSystem.sysBool( "USE_DEFAULT_PROPERTIE_VALUE" ); // 5.2.3.0 (2010/12/01) 8.4.3.0 (2023/03/31) Delete 377 colspan = ""; 378 rowspan = ""; // 6.2.0.0 (2015/02/27) rowspan 属性を追加 379 nextForm = null; // 3.5.4.2 (2003/12/15) 380 useRequestValue = true; // 3.5.4.9 (2004/02/25) 381 fieldSize = null; // 6.2.0.0 (2015/02/27) 382 viewSize = null; // 6.2.0.0 (2015/02/27) 383 maxlength = null; // 3.5.6.0 (2004/06/18) 384 body = null; // 3.8.0.4 (2005/08/08) 385 codeName = null; // 3.8.0.6 (2005/09/12) 386 codeList = null; // 5.1.9.0 (2010/08/01) 新規追加(Codeリソースのサブセット) 387 codeGroup = null; // 5.1.9.0 (2010/08/01) 新規追加(Codeリソースのサブセットとなるグループ) 388 codeKeyVal = null; // 5.6.6.0 (2013/07/05) 新規追加(新しいコードセレクトを作成する為の KEY:VAL 文字列) 389 useLblBody = false; // 7.4.2.0 (2021/04/30) BODYに記述した内容で、ラベルを作成します 390 renderer = null; 391 editor = null; 392 dbType = null; 393 eventColumn = null; // 4.3.6.0 (2009/04/01) 394 eventValue = null; // 6.3.3.0 (2015/07/25) 395 eventURL = null; // 4.3.6.0 (2009/04/01) 396 param = null; // 4.3.6.0 (2009/04/01) 397 dbid = null; // 5.7.6.2 (2014/05/16) 398 help = null; // 6.3.2.0 (2015/07/10) 399 xssCheck = HybsSystem.sysBool( "USE_XSS_CHECK" ); // 5.1.7.0 (2010/06/01) XSS解除対応 400 useSLabel = "auto"; // 5.5.1.0 (2012/04/03) 401 useDateFeed = true; // 8.1.2.3 (2022/05/20) 402 useHidden = false; // 8.3.1.0 (2022/10/14) 403 } 404 405 /** 406 * 検索条件の入力用のテキストフィールドを作成します。 407 * 408 * テーブルタグによりフィールドは分割されます。 409 * 使用時は、テーブルタグを前後に使用して下さい。 410 * 411 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で指定するように変更 412 * @og.rev 2.0.1.0 (2002/10/10) ラベルとフィールドのセパレーターとして、コロン(:)を使用するかどうかを指定できる 413 * @og.rev 3.0.0.0 (2002/12/25) colspan 属性を追加。 414 * @og.rev 3.0.1.4 (2003/03/17) colspan 属性の制御方法を変更 415 * @og.rev 3.5.4.9 (2004/02/25) value が null の時の 値の設定方法 416 * @og.rev 3.8.0.4 (2005/08/08) body 属性を追加。 417 * @og.rev 3.8.7.0 (2006/12/15) カラムリソースで指定したカラムラベルを反映させる。 418 * @og.rev 4.0.0.0 (2005/11/30) カラムロールを考慮 419 * @og.rev 4.1.2.1 (2008/03/13) must , mustAny 属性を自動化します。 420 * @og.rev 4.3.7.1 (2009/06/08) id=labelのclass化 421 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属性の処理を、HTMLTagSupport に移します。 422 * @og.rev 5.6.2.2 (2013/03/15) 自動must処理の出力位置を変更 423 * @og.rev 6.2.0.0 (2015/02/27) rowspan 属性を追加 424 * @og.rev 6.2.0.0 (2015/02/27) aimai 属性を追加。 425 * @og.rev 6.2.4.0 (2015/05/15) aimai 属性は、BODYのincludeより前に追加。 426 * @og.rev 6.3.2.0 (2015/07/10) help 属性の追加 427 * @og.rev 7.4.2.0 (2021/04/30) useLblBodyをtrueにすると、BODYに記述した内容で、ラベルを作成します 428 * @og.rev 8.3.1.0 (2022/10/14) 隠しフィールドの作成対応(useHidden 属性追加) 429 * @og.rev 8.4.3.0 (2023/03/31) defaultVal の設定値の取り扱い(変更あり) 430 * 431 * @return 入力用のテキストフィールドタグ 432 * @og.rtnNotNull 433 */ 434 @Override 435 protected String makeTag() { 436 // 3.8.7.0 (2006/12/15) カラムリソースで指定したカラムラベルを反映させる。 437 final DBColumn dbColumn = getDBColumn( name ); 438 String label = getLongLabel() ; 439 if( label == null ) { label = dbColumn.getLongLabel() ; } 440 441 final String tag = getInsertTag( dbColumn,value ); 442 443 // 4.0.0 (2005/11/30) カラムロールを考慮 444 // アクセス不可の場合は、ゼロ文字列を返す。 445 if( tag == null ) { return ""; } 446 447 // 3.8.0.4 (2005/08/08) BODY を使用する場合は、カラムフィールドの直後に挿入する。 448 // 6.2.4.0 (2015/05/15) aimai 属性は、BODYのincludeより前に追加。 449 if( body == null ) { body = ""; } 450 // 7.4.2.0 (2021/04/30) useLblBodyをtrueにすると、BODYに記述した内容で、ラベルを作成します 451 else if( useLblBody ) { label = body; body = ""; } 452 453 final StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 454 if( "yes".equals( tdFlag ) ) { 455 // 4.3.7.1 (2009/06/08) id=labelのclass化 456 // rtn.append( "<td id=\"label\">" ); 457 rtn.append( "<td class=\"label\"" ) // 6.2.0.0 (2015/02/27) 458 .append( rowspan ).append( '>' ) // 6.2.0.0 (2015/02/27) 459 .append( label ) 460 .append( CLM ) 461 .append( "</td><td" ) 462 .append( colspan ) 463 .append( rowspan ) // 6.2.0.0 (2015/02/27) 464 .append( '>' ) // 6.0.2.5 (2014/10/31) char を append する。 465 .append( tag ) 466 .append( makeHelpLink( help ) ) // 6.3.2.0 (2015/07/10) help 属性を追加 467 .append( makeAimaiPicker( name ) ) // 6.2.0.0 (2015/02/27) aimai 属性を追加 468 .append( makeMustHidden( name ) ) // 6.2.0.0 (2015/02/27) , 5.6.2.2 (2013/03/15) 469 .append( body ) // 6.2.4.0 (2015/05/15) 470 .append( "</td>" ); 471 } 472 else if( "no".equals( tdFlag ) ) { 473 // 4.3.7.1 (2009/06/08) id=labelのclass化 474 rtn.append( "<span class=\"label\">" ) 475 .append( label ) 476 .append( CLM ) 477 .append( "</span>" ) 478 .append( tag ) 479 .append( makeHelpLink( help ) ) // 6.3.2.0 (2015/07/10) help 属性を追加 480 .append( makeAimaiPicker( name ) ) // 6.2.0.0 (2015/02/27) aimai 属性を追加 481 .append( makeMustHidden( name ) ) // 6.2.0.0 (2015/02/27) , 5.6.2.2 (2013/03/15) 482 .append( body ); // 6.2.4.0 (2015/05/15) 483 } 484 // "false".equals( tdFlag ) の条件 485 else { 486 rtn.append( tag ) 487 .append( makeHelpLink( help ) ) // 6.3.2.0 (2015/07/10) help 属性を追加 488 .append( makeAimaiPicker( name ) ) // 6.2.0.0 (2015/02/27) aimai 属性を追加 489 .append( makeMustHidden( name ) ) // 6.2.0.0 (2015/02/27) , 5.6.2.2 (2013/03/15) 490 .append( body ); // 6.2.4.0 (2015/05/15) 491 } 492 493 // 8.3.1.0 (2022/10/14) 隠しフィールドの作成対応 494 if( useHidden ) { 495 final String disabled = get( "disabled" ); 496 if( !writable || "disabled".equalsIgnoreCase( disabled ) ) { 497 // 8.4.3.0 (2023/03/31) カラムリソースの初期値を使わない時に、"null"を設定すると、ゼロ文字列と置き換えます。(暫定対応) 498 if( "null".equalsIgnoreCase( value ) ) { value = ""; } 499 rtn.append( XHTMLTag.hidden( name,value ) ); 500 } 501 else { 502 final String errMsg = "useHidden は、writableが false 又は、disabledが disabled のときしか使えません。" + CR 503 + "\t name=[" + name + "] , writable=[" + writable + "] , disabled=[" + disabled + "]"; 504 throw new HybsSystemException( errMsg ); 505 } 506 } 507 508 return rtn.toString() ; 509 } 510 511 /** 512 * カラムがselectタグの場合に、値なしのオプション文字列を挿入します。 513 * 514 * addNoValue 値が True の場合のみ、挿入します。 515 * 516 * @og.rev 2.1.0.0 (2002/10/11) useDefaultPropertieVal 属性を追加。 517 * @og.rev 3.5.4.2 (2003/12/15) 入力カーソルを自動的に次のフィールドへ移動する機能を追加する。 518 * @og.rev 3.5.5.5 (2004/04/23) DBColumn の size と maxlength の 意味を変更 519 * @og.rev 3.5.5.7 (2004/05/10) DBColumn.getOption( String ) 廃止 520 * @og.rev 3.5.6.0 (2004/06/18) Attributes 経由でなく、直接 DBColumnConfig に設定します。 521 * @og.rev 3.8.0.6 (2005/09/12) codeName 属性を追加。 522 * @og.rev 3.8.7.0 (2006/12/15) カラムリソースで指定したカラムラベルを反映させる。 523 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソッドを XHTMLTag から DBColumn へ移動 524 * @og.rev 4.0.0.0 (2005/11/30) カラムロールを考慮。アクセス不可の場合は、null を返す。 525 * @og.rev 4.3.0.0 (2008/07/04) ロールモードマルチ対応 526 * @og.rev 4.3.7.2 (2009/06/15) 不要なIDが出力されるバグを修正 527 * @og.rev 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 528 * @og.rev 5.1.7.0 (2010/06/01) DBColumnの{@XXXX}変数対応 529 * @og.rev 5.1.9.0 (2010/08/01) codeList ,codeGroup 属性を追加(Codeリソースのサブセットとなるグループ) 530 * @og.rev 5.5.4.0 (2012/07/02) eventColumnの{@USER.XXXX}対応 531 * @og.rev 5.6.6.0 (2013/07/05) codeKeyVal 属性を追加 532 * @og.rev 5.7.6.2 (2014/05/16) dbid 属性を追加、IEのHTML5機能が無効の場合の処理 533 * @og.rev 5.7.6.2 (2014/05/16) IEのHTML5機能が無効の場合、list 属性は削除します。 534 * @og.rev 5.7.7.1 (2014/06/13) codeName 設定時に、renderer,editor が null の場合のみ、MENUに設定 535 * @og.rev 6.0.4.0 (2014/11/28) addKeyLabel 属性を追加 536 * @og.rev 6.2.0.0 (2015/02/27) viewSize 属性の追加 537 * @og.rev 6.2.3.0 (2015/05/01) maxlength 変数は、0 の場合は、無制限になります。 538 * @og.rev 6.3.1.0 (2015/06/28) 個人リソースのUSE_ADD_KEY_LABELで初期値設定 539 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 540 * @og.rev 5.9.18.1 (2017/03/24) editorにDATALIST_Rの追加対応 541 * @og.rev 6.7.7.2 (2017/04/14) (注意点3)現時点では、INMENU,INDBMENUについては、イベントカラムが正常に動作しません。 542 * @og.rev 8.4.3.0 (2023/03/31) useDefaultPropertieVal 属性廃止 543 * @og.rev 8.4.3.0 (2023/03/31) defaultVal の設定値の取り扱い(変更あり) 544 * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・トラブル 0200010980) 545 * 546 * @param clm DBColumnカラムオブジェクト 547 * @param value 設定値 548 * 549 * @return 入力用のカラムタグ 550 */ 551 private String getInsertTag( final DBColumn clm, final String value ) { 552 553 // 4.3.0.0 (2008/07/04) ロールモードマルチ対応 554 final String roles = get( "roles" ); 555 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 556 final RoleMode roleMode = roles == null 557 ? clm.getRoleMode() : RoleMode.newInstance( roles ); 558 559 final byte byteMode = getUser().getAccessBitMode( roleMode ) ; 560 561 if( !RoleMode.isAccess( byteMode ) ) { return null; } // アクセス不可(rw不可) 562 563 // 書き込み権限のチェック 564 // writable = writable && RoleMode.isWrite( byteMode ); 565 566 // 3.5.4.2 (2003/12/15) 入力カーソルを自動的に次のフィールドへ移動する機能 567 if( nextForm != null ) { 568 // 6.2.3.0 (2015/05/01) maxlength 変数は使用しません。 569 final String onKeyup = "nextForm(this,'" + nextForm + "'," + clm.getTotalSize() + ");" ; 570 set( "onKeyup",onKeyup ); 571 } 572 573 // 3.5.6.0 (2004/06/18) 直接 DBColumnConfig に設定します。 574 if( fieldSize == null && maxlength != null ) { 575 // 4.0.0 (2005/01/31) getFieldSize メソッドを XHTMLTag から DBColumn へ移動 576 final int fsize = clm.getFieldSize( Integer.parseInt( maxlength ) ); 577 fieldSize = String.valueOf( fsize ); 578 } 579 580 final DBColumnConfig config = clm.getConfig(); 581 582// // 5.7.6.2 (2014/05/16) IEのHTML5機能が無効の場合の処理 8.5.2.0 (2023/07/14) Delete 583// final String ieHTML5 = (String)getSessionAttribute( HybsSystem.IE_HTML5_KEY ); 584// if( "FALSE".equalsIgnoreCase( ieHTML5 ) ) { 585// if( "DATALIST".equalsIgnoreCase( editor ) || 586// "DATALIST".equalsIgnoreCase( config.getEditor() ) ) { 587// editor = "INDBMENU"; 588// // 5.7.6.2 (2014/05/16) list 属性は削除します。 589// set( "list",null ); 590// } 591// // 5.9.18.1 (2017/03/24) IEのHTML5機能が無効の場合の処理(DATALIST_R用) 592// if( "DATALIST_R".equalsIgnoreCase( editor ) || 593// "DATALIST_R".equalsIgnoreCase( config.getEditor() )){ 594// editor = "INMENU"; 595// set( "list",null ); 596// } 597// } 598 599 if( maxlength != null ) { config.setMaxlength( maxlength ); } 600 if( fieldSize != null ) { config.setFieldSize( fieldSize ); } // 6.2.0.0 (2015/02/27) メソッド名変更 601 if( viewSize != null ) { config.setViewLength(viewSize ); } // 6.2.0.0 (2015/02/27) 新規追加 602 if( renderer != null ) { config.setRenderer( renderer ); } 603 if( editor != null ) { config.setEditor( editor ); } 604 if( dbType != null ) { config.setDbType( dbType ); } 605 if( eventColumn != null ) { config.setEventColumn( eventColumn ); } // 4.3.6.0 (2009/04/01) 606 if( eventValue != null ) { config.setEventValue( eventValue ); } // 6.3.3.0 (2015/07/25) 607 608 // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..; 609 if( param == null ) { 610 if( clm.isNeedsParamParse() ){ 611 config.setRendererParam( getRequestParameter( config.getRendererParam() ) ); 612 config.setEditorParam( getRequestParameter( config.getEditorParam() ) ); 613 } 614 } 615 else { 616 config.setParameter( getRequestParameter( param ) ); // ここで{@XXXX}変換 617 config.setRawParameter( getReservedParameter(param ) ); // 5.5.4.0 (2012/07/02) 予約語対応 618 } 619 620 if( dbid != null ) { config.setDbid( dbid ); } // 5.7.6.2 (2014/05/16) 621 if( eventURL != null ) { config.setEventURL( eventURL ); } // 4.3.6.0 (2009/04/01) 622 if( useSLabel != null ) { config.setUseSLabel( useSLabel ); } // 5.5.1.0 (2012/04/03) 623 if( !useDateFeed ) { config.setUseDateFeed( useDateFeed ); } // 8.1.2.3 (2022/05/20) 624 625 // 6.3.1.0 (2015/06/28) 個人リソースのUSE_ADD_KEY_LABELで初期値設定 626 if( addKeyLabel == null ) { addKeyLabel = nval( sys( "USE_ADD_KEY_LABEL" ) , null ); } // 4:個人設定可 627 if( addKeyLabel != null ) { config.setAddKeyLabel( addKeyLabel ); } // 6.0.4.0 (2014/11/28) 628 629 // 4.0.0 (2005/01/31) 630 if( codeName != null ) { 631 final CodeData codeData = getResource().getCodeData( codeName ) ; 632 config.setCodeData( codeData ); 633 // 5.7.7.1 (2014/06/13) codeName 設定時に、renderer,editor が null の場合のみ、MENUに設定。 634 if( renderer == null ) { config.setRenderer( "MENU" ); } 635 if( editor == null ) { config.setEditor( "MENU" ); } 636 } 637 638 // 5.6.6.0 (2013/07/05) CodeData オブジェクトの取得を表に移動 639 // codeName で指定のリソースでも、サブセットが作成できます。 640 final CodeData codeData = config.getCodeData() ; 641 if( codeData != null ) { 642 // 5.1.9.0 (2010/08/01) codeList 属性を追加(Codeリソースのサブセット) 643 if( codeList != null ) { 644 config.setCodeData( codeData.subsetList( codeList ) ); 645 } 646 647 // 5.1.9.0 (2010/08/01) codeGroup 属性を追加(Codeリソースのサブセットとなるグループ) 648 if( codeGroup != null ) { 649 config.setCodeData( codeData.subsetGroup( codeGroup ) ); 650 } 651 652 // 5.1.9.0 (2010/08/01) RoleMode 制御を追加(Codeリソースのサブセット) 653 if( codeData.useRoleMode() ) { 654 config.setCodeData( codeData.subsetRole( getUser().getRoleMode() ) ); 655 } 656 } 657 658 // 5.6.6.0 (2013/07/05) codeKeyVal 新しいコードセレクトを作成する。 659 // 6.0.4.0 (2014/11/28) KVMENUエディター で構築する。 660 if( codeKeyVal != null ) { 661 config.setParameter( codeKeyVal ); 662 config.setRenderer( "KVMENU" ); 663 config.setEditor( "KVMENU" ); 664 } 665 666 final Attributes attri = getAttributes(); 667 config.setEditorAttributes( attri ); 668 final DBColumn column = new DBColumn( config ); 669 670 // 6.1.0.0 (2014/12/26) refactoring 671// final String val = useDefVal && ( value == null || value.isEmpty() ) ? column.getDefault() : value ; 672 // 8.4.3.0 (2023/03/31) カラムリソースの初期値を使わない時に、"null"を設定すると、ゼロ文字列と置き換えます。(暫定対応) 673 String val = USE_DEFVAL && ( value == null || value.isEmpty() ) ? column.getDefault() : value ; 674 if( "null".equalsIgnoreCase( val ) ) { val = ""; } 675 676 String rtn = null; 677 if( writable ) { 678 final String editTag = column.getEditorValue( val ); 679 final StringBuilder tag = new StringBuilder( BUFFER_MIDDLE ) 680 .append( editTag ); 681 if( addNoValue && editTag.startsWith( "<select" ) ) { 682 final int offset = editTag.indexOf( '>' ); 683 tag.insert( offset+1,"<option value=\"\" ></option>" ); 684 } 685 rtn = tag.toString(); 686 } 687 else { 688 if( attri == null || attri.size() == 0 ) { 689 rtn = column.getRendererValue( val ); 690 } 691 else { 692 attri.set( "body" , column.getRendererValue( val ) ); 693 rtn = XHTMLTag.span( attri ); 694 } 695 } 696 697 // 4.3.6.0 (2009/04/01) eventColumn対応 生SQL文のセッション保存 698 // 5.1.7.0 (2010/06/01) 動的プルダウン実装見直し 699 final String evCol = column.getEventColumn(); 700 if( evCol != null && evCol.length() > 0 ){ 701// // 6.7.7.2 (2017/04/14) (注意点3)現時点では、INMENU,INDBMENUについては、イベントカラムが正常に動作しません。8.5.2.0 (2023/07/14) Delete 702// if( "INMENU".equals( config.getEditor() ) || "INDBMENU".equals( config.getEditor() ) ) { 703// final String errMsg = "(注意点3)現時点では、INMENU,INDBMENUについては、イベントカラムが正常に動作しません。" + CR 704// + "\t name=[" + name + "] , eventColumn=[" + evCol + "] , editor=[" + config.getEditor() + "]"; 705// throw new HybsSystemException( errMsg ); 706// } 707 addEventColumn( column ); 708 rtn = column.getEventColumnTag( rtn, val, writable ); 709 } 710 711 return rtn; 712 } 713 714 /** 715 * 【TAG】カラムの名前を返します。 716 * 717 * @og.tag 718 * <og:column name="PN" /> 719 * 720 * @og.rev 4.2.4.0 (2008/07/01) 721 * 722 * @return カラムの名前 723 */ 724 protected String getName() { 725 return name; 726 } 727 728 /** 729 * 【TAG】カラムの名前を指定します。 730 * 731 * @og.tag 732 * <og:column name="PN" /> 733 * 734 * @og.rev 3.8.0.9 (2005/10/17) RequestParameter変数({@XXXX})が使用できるように修正 735 * 736 * @param name 名前 737 */ 738 public void setName( final String name ) { 739 this.name = nval( getRequestParameter( name ),this.name ); 740 } 741 742 /** 743 * 【TAG】設定値を指定します。 744 * 745 * @og.tag 746 * <og:column name="PN" value="syokichi" /> 747 * 748 * @param val 設定値 749 */ 750 public void setValue( final String val ) { 751 value = nval( getRequestParameter( val ),value ); 752 } 753 754 /** 755 * 【TAG】value属性に値がセットされていないとき使用する、初期値を指定します。 756 * 757 * @og.tag 758 * value属性に値がセットされていないときに、この初期値を使用します。 759 * 760 * なお、commandがRENEWの場合は、このdefaultValは適用されません。 761 * これは、defaultValの値が埋め込まれた項目が存在する画面に戻った際に、 762 * defaultValの項目の値がnullとなっていた場合に、defaultValの値が復元されると、 763 * 検索結果との不一致が発生するためです。 764 * 765 * 8.4.3.0 (2023/03/31) defaultVal の設定値の取り扱い(変更あり) 766 * {@XXXX} は、リクエスト変数 ⇒ valueタグセット値 を確認 767 * 値がなければ、""(空文字列) となる。 768 * 通常の固定値は、そのまま使用される(""(空文字列)も有効 769 * defaultVal属性を使用しない場合は、""(空文字列) となる。 770 * 771 * システム定数 USE_DEFAULT_PROPERTIE_VALUE が true の場合は、カラムリソースの初期値が 772 * 使用されます。カラムリソースの初期値より、defaultVal が優先されます。 773 * カラムリソースの初期値を使わない時に、"null"を設定すると、ゼロ文字列と置き換えます。 774 * 775 * @param dv 初期値 776 */ 777 public void setDefaultVal( final String dv ) { 778 defaultVal = nval( getRequestParameter( dv ),defaultVal ); 779 } 780 781// /** 782// * 【廃止】カラムリソースの初期値を使うかどうか[true/false]を指定します(初期値:false)。 783// * 784// * @og.tag 785// * 初期値がセットされていないときに指定します。 786// * 使う場合はtrue、使わない場合は falseをセットします。 787// * この初期値を、システム定数の USE_DEFAULT_PROPERTIE_VALUE で設定可能とします。 788// * 789// * @og.rev 2.1.0.0 (2002/10/11) useDefaultPropertieVal 属性を追加。 790// * @og.rev 5.2.3.0 (2010/12/01) 初期値をシステム定数で定義(USE_DEFAULT_PROPERTIE_VALUE) 791// * @og.rev 8.4.3.0 (2023/03/31) useDefaultPropertieVal 属性廃止 792// * 793// * @param dv ファイルの初期値 [true:使う/false:使わない] 794// */ 795// public void setUseDefaultPropertieVal( final String dv ) { 796// useDefVal = nval( getRequestParameter( dv ),useDefVal ); 797// } 798 799 /** 800 * 【TAG】テーブル形式の <td> タグを使用するかどうか[yes/no/false]を指定します(初期値:yes)。 801 * 802 * @og.tag 803 * yes(初期値) とすると、ラベルとフィールドをテーブルのtdタグでそれぞれ記述します。 804 * no とすると、tdタグを使用せず、ラベルとフィールドを表示します。 805 * false は、ラベルを出さずに、フィールドのみを表示します。 806 * 807 * <td><og:column name="PN" td="no" /> </td> 808 * 809 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で指定するように変更 810 * @og.rev 2.1.2.3 (2002/12/02) errMsg の文字列の修正漏れを訂正 811 * @og.rev 6.3.4.0 (2015/08/01) Arrays.toString から String.join に置き換え。 812 * @og.rev 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 813 * 814 * @param flag TDタグ使用 [yes:タグを使用/no:ラベルとフィールド/false:フィールドのみ] 815 */ 816 public void setTd( final String flag ) { 817 final String td = nval( getRequestParameter( flag ),tdFlag ); 818 819 if( check( td , TD_SET ) ) { 820 tdFlag = td; 821 } 822 else { 823 final String errMsg = "Error in SelectTag [td]: " 824 + td + " in [" + String.join( ", " , TD_SET ) + "] only used."; 825 throw new HybsSystemException( errMsg ); 826 } 827 } 828 829 /** 830 * 【TAG】セレクトメニューの場合、値なしのOptionを含めるかどうか[true/false]を指定します(初期値:true)。 831 * 832 * @og.tag 833 * カラムがプルダウンメニュー形式の場合、選択肢には通常データベース登録できる候補が 834 * 並びます。しかし、検索時には、候補を絞りたくない(指定しない)場合があり、 835 * その様な場合には、値なしのOptionを含める(true)ことで、対応可能です。 836 * 初期値:true(値なしのOptionを含める)なので、検索画面に利用する場合は、そのまま使用できます。 837 * 838 * <og:column name="CDC" addNoValue="false" /> 839 * 840 * @param flag 値なしのOptionの有無 [true:含める/それ以外:含めない] 841 */ 842 public void setAddNoValue( final String flag ) { 843 addNoValue = nval( getRequestParameter( flag ),addNoValue ); 844 } 845 846 /** 847 * 【TAG】セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を指定します(初期値:null)。 848 * 849 * @og.tag 850 * カラムがプルダウンメニュー形式の場合、キー:ラベル形式で表示するか、ラベルだけで表示するかを 851 * 選択できます。 852 * true を指定すると、「強制的に」キー:ラベル形式で表示します。 853 * false の場合は、「強制的に」ラベルのみで表示されます。 854 * 初期値の null の場合、コードリソースや、SQL文に準拠した指定通りの形式で表示します。 855 * 856 * <og:column name="CDC" addKeyLabel="true" /> 857 * 858 * @og.rev 6.0.4.0 (2014/11/28) キー:ラベル形式で表示するかどうか。新規追加 859 * 860 * @param flag キー:ラベル形式表示 [true:キー:ラベル形式/false:ラベルのみ/null:指定通り] 861 */ 862 public void setAddKeyLabel( final String flag ) { 863 addKeyLabel = nval( getRequestParameter( flag ),addKeyLabel ); 864 } 865 866 /** 867 * 【TAG】書き込みタイプかどうか[true/false]を指定します(初期値:true)。 868 * 869 * @og.tag 870 * 初期値は、書き込みタイプ("true") です。 871 * <og:column name="PN" writable="false" /> 872 * 873 * @param flag 書き込み許可 [true:許可/false:不可] 874 */ 875 public void setWritable( final String flag ) { 876 writable = nval( getRequestParameter( flag ),writable ); 877 } 878 879 /** 880 * 【HTML】最大入力文字数を指定します(入力可能文字数で、バイト数ではありません)。 881 * 882 * @og.tag 883 * 指定しない場合は、カラム定義に準拠します。 884 * また、値を 0 に設定した場合、無制限になります。 885 * <og:column name="PN" maxlength="20" /> 886 * 887 * @og.rev 3.5.4.2 (2003/12/15) 最大入力制限数に応じたサイズ自動生成を入れます。 888 * @og.rev 3.5.4.5 (2004/01/23) CSSで処理する場合のクラス属性は、maxlength が 5 以下の場合とする。 889 * @og.rev 3.5.6.0 (2004/06/18) Attributes 経由でなく、直接 DBColumnConfig に設定します。 890 * @og.rev 6.2.0.0 (2015/02/27) 小さなカラムのサイズ指定は、すでに廃止 ("S0" + 桁数(1~5)) 891 * @og.rev 6.2.3.0 (2015/05/01) maxlength 変数は、0 の場合は、無制限になります。 892 * 893 * @param maxlen 最大入力文字数 894 */ 895 public void setMaxlength( final String maxlen ) { 896 maxlength = nval( getRequestParameter( maxlen ),null ); 897 898 // 6.2.3.0 (2015/05/01) maxlength 変数は、0 の場合は、無制限になります。 899 if( "0".equals( maxlength ) ) { set( "NO_MAXLEN", "true" ); } 900 } 901 902 /** 903 * 【TAG】カラムの入力枠サイズ(横幅)を文字数でセットします(入力文字制限ではありません)。 904 * 905 * @og.tag 906 * <og:column name="PN" size="20" /> 907 * 908 * @og.rev 3.5.6.0 (2004/06/18) Attributes 経由でなく、直接 DBColumnConfig に設定します。 909 * 910 * @param size 入力枠サイズ(横幅) 911 */ 912 public void setSize( final String size ) { 913 fieldSize = nval( getRequestParameter( size ),null ); 914 } 915 916 /** 917 * 【TAG】カラムの表示サイズ(横幅)を文字数でセットします。 918 * 919 * @og.tag 920 * 入力枠ではなく、表示する時の文字数制限に使われます。 921 * maxLength は、DB上の桁数(バイト数)ですが、viewSize は、文字数です。 922 * SLABEL の簡易バイト数計算(全角2Byte)でもなく、文字数計算になります。 923 * 924 * @og.rev 6.2.0.0 (2015/02/27) viewSize 属性の追加 925 * 926 * @param len 表示サイズ(横幅) 927 */ 928 public void setViewSize( final String len ) { 929 viewSize = nval( getRequestParameter( len ),null ); 930 } 931 932 /** 933 * 【TAG】フィールド部分の colspan を指定します。 934 * 935 * @og.tag 936 * 通常は、ラベルとフィールドが、別のtdで囲われます。しかし、場合によっては、 937 * フィールド部の長いカラムがある場合、上下のカラムとの位置関係がおかしくなり、 938 * ラベルとフィールドが離れて表示されるケースがあります。 939 * この場合、長いフィールド部を持つカラムに、colspan 属性を指定すると、 940 * その分のカラムを割り当てることにより、上下のカラムとの位置関係を 941 * 調節することが可能になります。 942 * 通常は 3 を指定して、tdが、フィールド、ラベル、フィールドの 943 * 組み合わせ部分に、長いフィールドが適用されるように使用します。 944 * 945 * <og:column name="PN" colspan="3" /> 946 * 947 * @og.rev 3.0.0.0 (2002/12/25) colspan 属性を追加。 948 * @og.rev 3.0.1.4 (2003/03/17) colspan 属性の制御方法を変更 949 * 950 * @param sp フィールド部分のcolspan 951 */ 952 public void setColspan( final String sp ) { 953 colspan = nval( getRequestParameter( sp ),colspan ); 954 if( colspan.length() > 0 ) { 955 colspan = " colspan=\"" + colspan + "\" "; 956 } 957 } 958 959 /** 960 * 【TAG】ラベル、フィールド共に rowspan を指定します。 961 * 962 * @og.tag 963 * 通常は、ラベルとフィールドが、別のtdで囲われます。rowspan は、 964 * そのどちらの TDフィールドにも、設定します。 965 * 初期値は、rowspan を付けないです。 966 * 967 * <og:column name="PN" rowspan="3" /> 968 * 969 * @og.rev 6.2.0.0 (2015/02/27) rowspan 属性を追加 970 * 971 * @param sp ラベル、フィールド部分のrowspan 972 */ 973 public void setRowspan( final String sp ) { 974 rowspan = nval( getRequestParameter( sp ),rowspan ); 975 if( rowspan.length() > 0 ) { 976 rowspan = " rowspan=\"" + rowspan + "\" "; 977 } 978 } 979 980 /** 981 * 【TAG】入力カーソルを、指定されたname属性のフィールドへ自動的に移動させます。 982 * 983 * @og.tag 984 * JavaScript の onKeyup イベントを利用して、最大桁数まで入力すると、 985 * 次のフィールドに、自動的にカーソルが飛ぶように設定します。 986 * 引数は、次に飛ばすフィールドの name 属性です。 987 * 実行するには、JavaScript の nextForm 関数が必要です。(default.js で指定) 988 * 989 * @og.rev 3.5.4.2 (2003/12/15) 新規追加 990 * 991 * @param name 次にフォーカスを移すタグのname属性 992 */ 993 public void setNextForm( final String name ) { 994 nextForm = nval( getRequestParameter( name ),nextForm ); 995 } 996 997 /** 998 * 【TAG】value が null の場合に、name 属性から Request情報 を適用するかどうかを指定します(初期値:true)。 999 * 1000 * @og.tag 1001 * name 属性に一致するリクエスト情報がある場合、value が null の場合や、 1002 * 引数を設定していない場合は、この設定値に応じて、リクエスト情報の値を 1003 * 設定します(初期値:true なので、通常はこの動きです) 1004 * ごくまれに、ENTRY 系の削除を行う場合、リクエスト情報が残り、削除されずに 1005 * 再表示(DB的には削除済み)されるケースでは、使用しない(false)設定が可能です。 1006 * 1007 * useRequestValue | true(初期値) | false 1008 * ------------------+------------------------+------------ 1009 * value |A A A A _ _ _ _ |_ _ _ _ 1010 * name(Request情報) |B B _ _ B B _ _ |B B _ _ 1011 * defaultVal |C _ C _ C _ C _ |C _ C _ 1012 * ==================+========================+============ 1013 * 設定値 |A A A A B B C _ |C _ C _ 1014 * 1015 * @og.rev 3.5.4.9 (2004/02/25) 新規追加 1016 * 1017 * @param flag Request情報適用 [true:する/false:しない] 1018 */ 1019 public void setUseRequestValue( final String flag ) { 1020 useRequestValue = nval( getRequestParameter( flag ),useRequestValue ); 1021 } 1022 1023 /** 1024 * 【TAG】コードセレクトのユニークキー(コード名称)をセットします。 1025 * 1026 * @og.tag 1027 * このキーを元に、CodeData オブジェクトを構築します。 1028 * 1029 * @og.rev 3.8.0.6 (2005/09/12) 新規作成 1030 * 1031 * @param name メニューのユニークキー 1032 */ 1033 public void setCodeName( final String name ) { 1034 codeName = nval( getRequestParameter( name ),codeName ); 1035 } 1036 1037 /** 1038 * 【TAG】コードセレクトのサブセットとなるコード(キー)をCSV形式で指定します。 1039 * 1040 * @og.tag 1041 * この値に限定された、コードリソースを、既存の、CodeData の 1042 * サブセットとして作成します。 1043 * codeName で指定されたリソースでも、サブセットを作成する事ができます。 1044 * ここで指定するのは、コード(キー)だけです。 1045 * 1046 * @og.rev 5.1.9.0 (2010/08/01) 新規作成 1047 * 1048 * @param list コードセレクトのサブセットとなるコード(キー) 1049 */ 1050 public void setCodeList( final String list ) { 1051 codeList = nval( getRequestParameter( list ),codeList ); 1052 } 1053 1054 /** 1055 * 【TAG】コードセレクトのサブセットとなるグループを指定します。 1056 * 1057 * @og.tag 1058 * この値に限定された、コードリソースを、既存の、CodeData の 1059 * サブセットとして作成します。 1060 * codeName で指定されたリソースでも、サブセットを作成する事ができます。 1061 * グループとは、optiongroup の事ではなく、コードリソースに関連付けられた 1062 * グループを指定する事で、簡易的にサブセットを作成します。 1063 * 1064 * @og.rev 5.1.9.0 (2010/08/01) 新規作成 1065 * 1066 * @param group コードセレクトのサブセットとなるグループ 1067 */ 1068 public void setCodeGroup( final String group ) { 1069 codeGroup = nval( getRequestParameter( group ),codeGroup ); 1070 } 1071 1072 /** 1073 * 【TAG】新しいコードセレクトを作成する為の「キー:ラベル キー:ラベル」の文字列を指定します。 1074 * 1075 * @og.tag 1076 * 既存の、CodeData には存在しない、新しいコードリソースを作成する為の、文字列を指定します。 1077 * 文字列は、「キー:ラベル キー:ラベル」形式で、スペースで分解後、":" でキーとラベルに分離します。 1078 * スペース分解後の文字列に、":" が含まれていない場合は、キーをラベルとして扱います。 1079 * また、ラベル部分は、ラベルリソースを使用して、変換を行います。 1080 * 内部的には、CodeData を作成しません。DBColumnオブジェクト内で、直接、Selection_KEYVAL を生成します。 1081 * codeName 、codeList、codeGroup などが指定された場合は、そちらが優先されます。 1082 * 「キー:ラベル キー:ラベル」で、ラベル にスペースを含ませる場合は、ダブルクォーテーションで囲ってください。 1083 * 「"キー:ラベル" "キー:ラベル"」という感じです。 1084 * 1085 * ※ 6.0.4.0 (2014/11/28) editor,renderer を、"KVMENU" にして、param に、「キー:ラベル キー:ラベル」 1086 * の文字列を指定してください。近い将来、この属性は、廃止します。 1087 * ※ 6.2.6.0 (2015/06/19) 廃止を取りやめます。上記、KVMENU設定と、param でもできますが、それの 1088 * 簡易版として、残します。(若干の仕様強化を図ります) 1089 * 1090 * @og.rev 5.6.6.0 (2013/07/05) 新規作成 1091 * @og.rev 6.0.4.0 (2014/11/28) editor,renderer を、"KVMENU" にして、param を使用してください。 1092 * @og.rev 6.2.6.0 (2015/06/19) 廃止の取りやめ。なんとなく便利なので残します。 1093 * 1094 * @param keyval KEY:VAL文字列 1095 */ 1096 public void setCodeKeyVal( final String keyval ) { 1097 codeKeyVal = nval( getRequestParameter( keyval ),codeKeyVal ); 1098 } 1099 1100 /** 1101 * 【TAG】BODYに記述した内容で、ラベルを作成します。 1102 * 1103 * @og.tag 1104 * 通常のラベルの代わりに、BODY部に記述した内容を、ラベルとして使用します。 1105 * BODY が 未指定の場合は、useLblBody="true" でも、元のラベルを使います。 1106 * 1107 * @og.rev 7.4.2.0 (2021/04/30) useLblBodyをtrueにすると、BODYに記述した内容で、ラベルを作成します 1108 * 1109 * @param flag KEY:VAL文字列 1110 */ 1111 public void setUseLblBody( final String flag ) { 1112 useLblBody = nval( getRequestParameter( flag ),useLblBody ); 1113 } 1114 1115 /** 1116 * 【TAG】カラムの表示用レンデラー({@og.doc03Link renderer Renderer_****})をセットします。 1117 * 1118 * @og.tag 1119 * これは、plugin.column 以下の Renderer_**** クラスの **** を 1120 * 与えます。これらは、CellRenderer インターフェースを継承したサブクラスです。 1121 * 属性クラス定義の {@link org.opengion.hayabusa.db.CellRenderer Renderer} を参照願います。 1122 * {@og.doc03Link renderer Renderer_**** クラス} 1123 * 1124 * @param rdr 表示用レンデラー (Renderer_**** の ****) 1125 * @see org.opengion.hayabusa.db.CellRenderer 1126 */ 1127 public void setRenderer ( final String rdr ) { 1128 renderer = nval( getRequestParameter( rdr ),renderer ); 1129 } 1130 1131 /** 1132 * 【TAG】カラムの編集用エディター({@og.doc03Link editor Editor_****})をセットします。 1133 * 1134 * @og.tag 1135 * これは、plugin.column 以下の Editor_**** クラスの **** を 1136 * 与えます。これらは、CellEditor インターフェースを継承したサブクラスです。 1137 * 属性クラス定義の {@link org.opengion.hayabusa.db.CellEditor Editor} を参照願います。 1138 * {@og.doc03Link editor Editor_**** クラス} 1139 * 1140 * @param ed 編集用エディター (Editor_**** の ****) 1141 * @see org.opengion.hayabusa.db.CellEditor 1142 */ 1143 public void setEditor ( final String ed ) { 1144 editor = nval( getRequestParameter( ed ),editor ); 1145 } 1146 1147 /** 1148 * 【TAG】DBタイプ({@og.doc03Link dbType DBType_****})をセットします。 1149 * 1150 * @og.tag 1151 * これは、org.opengion.hayabusa.db.column 以下の DBType_**** クラスの **** を 1152 * 与えます。これらは、DBType インターフェースを継承したサブクラスです。 1153 * 属性クラス定義の {@link org.opengion.hayabusa.db.DBType DBType} を参照願います。 1154 * {@og.doc03Link dbType DBType_**** クラス} 1155 * 1156 * @param dt パラメータ 1157 * @see org.opengion.hayabusa.db.DBType DBType_**** の **** 1158 */ 1159 public void setDbType( final String dt ) { 1160 dbType = nval( getRequestParameter( dt ),dbType ); 1161 } 1162 1163 /** 1164 * 【TAG】イベントカラム(親カラム)を設定します。 1165 * 1166 * @og.tag 1167 * 親子関係を持った項目の動的な入れ替えを行う場合に利用します。 1168 * このカラムを変化させるトリガとなるカラムの名前をセットします。 1169 * 1170 * この属性がセットされた場合、親カラムが変更都度子カラム(自身のカラム)が 1171 * 再表示されます。 1172 * 標準で再表示時に受け継がれる属性は以下の通りです。 1173 * (1)editor・renderer 1174 * (2)writable 1175 * (3)addNoValue 1176 * (4)class(must・mustAnyや、DBTypeを含みます) 1177 * (5)style(optionAttributes等でセットしたもの) 1178 * (6)size 1179 * (7)maxlength 1180 * これら以外に特殊な設定を行ったカラムに関しては、eventURL属性でカスタムの 1181 * 置き換え用JSPを作成し、個別に対応して下さい。 1182 * 1183 * また、置き換えの定義は、param属性で定義します。 1184 * param属性に定義されたSQL文の結果により、各種エディター、レンデラーによって、以下の 1185 * ように置き換えが行われます。 1186 * 1187 * (1)DBMENUの場合 1188 * paramに指定されたSQL文により動的にプルダウンを置き変えます。 1189 * SQL文の{@XXXX}の記述により、その時点での親カラムの値を参照することができます。 1190 * 1191 * 例) SELECT A.CODE,B.LNAME FROM GEA04 A,GEA08 B 1192 * WHERE A.CLM||'.'||A.CODE = B.CLM 1193 * AND A.SYSTEM_ID = B.SYSTEM_ID 1194 * AND A.CLM like 'KBSAKU%' 1195 * AND B.LANG like '{@LANG}' ← name=LANGを持つ項目のその時点での値に変換される 1196 * AND B.SYSTEM_ID = '**' 1197 * 1198 * (2)DBMENU以外の場合 1199 * paramに指定されたSQL文により値(value値)を置き換えたカラムを作成し、置き換えます。 1200 * DBMENUの場合と同様、SQL文の{@XXXX}の記述により、その時点での親カラムの値を参照することができます。 1201 * 1202 * 例) SELECT LABEL_NAME FROM GF41 1203 * WHERE SYSTEM_ID='{@SYS.SYSTEM_ID}' AND CLM='{@CLM}' AND LANG='{@LANG}' 1204 * 1205 * なお、いずれの場合も、{@XXXX}の部分については、$1,$2...$9の形式でも記述することができます。 1206 * この場合、$1は1番目のeventColumnのカラム、$2は2番目のeventColumnのカラムと指します。 1207 * 1208 * (注意点1)イベントカラムによるイベントは、画面表示時に1度実行されます。 1209 * 但し、eventColumn属性で、カラム名の先頭に'_'をつけた場合、 1210 * または親カラムの値がNULLの場合は実行されません。 1211 * 1212 * (注意点2)SQL文などのパラメーター中に記述された{@XXXX}の値の変換はJavaScriptにより行われるため、 1213 * 値が取得できる項目は、"画面に書き込み可能状態で表示されているカラム"に限ります。 1214 * テーブルモデル内の変数や表示のみの値については、ここでは利用することはできません。 1215 * {@USER.XXXX}等の予約語に関しては、5.5.4.0以降では処理されます。 1216 * 1217 * <del>(注意点3)現時点では、INMENU,INDBMENUについては、入れ替え後のJavaScriptが正常に動作しないため、 1218 * イベントカラムが正常に動作しません。</del> 1219 * 1220 * (注意点4) 6.8.2.4 (2017/11/20) イベントカラムの、変数($1,$2...$9)は、先頭から9つまでしか使えません。 1221 * 10個目以降の変数は無視されますので、必要であれば、9個までの位置に、カラムを記述してください。 1222 * 1223 * (注意点5) 7.3.0.0 (2021/01/06) イベントカラムを定義すると、子カラムの onChange イベントが発火されます。 1224 * これは、(注意点1)のカラム名の先頭に'_'をつけた場合でも同様です。 1225 * 子カラムにonChangeを記述する場合は、ご注意ください。 1226 * 1227 * @og.rev 4.3.6.0 (2009/04/01) 1228 * @og.rev 5.1.7.0 (2010/06/01) コメント大幅修正 1229 * @param col 親カラム 1230 */ 1231 public void setEventColumn( final String col ) { 1232 eventColumn = nval( getRequestParameter( col ), eventColumn ); 1233 } 1234 1235 /** 1236 * 【TAG】eventColumn使用時の値を、SQL文から求めるためのqueryをセットします。 1237 * 1238 * @og.tag 1239 * eventColumn利用時は{@XXXX}はリクエストパラメータではなく 1240 * xxxカラムの実際の値が利用されます。 1241 * 1242 * @og.rev 6.3.3.0 (2015/07/25) eventValue 追加 1243 * @param val パラメータ 1244 */ 1245 public void setEventValue( final String val ) { 1246 eventValue = nval( getReservedParameter( val ), eventValue ); // ここでは{@XXXX}変換をしない 1247 } 1248 1249 /** 1250 * 【TAG】イベントカラム指定時に呼び出すURLを指定します。 1251 * 1252 * @og.tag 1253 * 初期値はシステム定数のEVENT_COLUMN_URLです。 1254 * イベントカラム指定時に部品を作成するJSPを指定します。 1255 * (設定例:eventURL="makeColumn_custom.jsp") 1256 * 1257 * 置き換え対象のカラムに特殊な設定がされており、標準のカラム置き換えでは対応できない場合に、 1258 * このURLを指定することで、個別に置き換え方法を定義する必要があります。 1259 * 1260 * なお、個別に置き換え方法を定義したJSPを作成する場合は、標準(jsp/common/eventColumnMaker.jsp)を 1261 * 参考にして作成して下さい。 1262 * 1263 * eventColumnから利用するJSPで利用可能なリクエスト変数 1264 * {@EC_CNAME} 子カラム名(一覧表示の場合でも行番号__nは付加されません) 1265 * {@EC_RENDERER} 子カラムのレンデラー 1266 * {@EC_EDITOR} 子カラムのエディター 1267 * {@EC_SQL} 子カラムのプルダウン、または値を出力するためのSQL文({@XXXX}をカラムのvalue値で置き換えたもの) 1268 * {@EC_VALSQL} 子カラムの値を出力するためのSQL文({@XXXX}をカラムのvalue値で置き換えたもの) 1269 * {@EC_WRITABLE} 子カラムが編集可能などうか 1270 * {@EC_CVALUE} 子カラムの現在の値 1271 * {@EC_NOVALUE} 子カラムの最上部Option値が空ならtrue。その他false(addNoValue属性値と同じです) 1272 * {@EC_CLASS} 子カラムのCLASS属性 1273 * {@EC_SIZE} 子カラムのSIZE属性 1274 * {@EC_MAXLENGTH} 子カラムのMAXLENGTH属性 1275 * {@EC_OPTATTRS} 子カラムのその他OPTION属性 1276 * {@EC_PNAMEE} 親カラム名(一覧表示の場合でも行番号__nは付加されません) 1277 * {@EC_PVALUE} 親カラムの現在の値 1278 * 1279 * @og.rev 4.3.6.0 (2009/04/01) 1280 * @og.rev 5.1.7.0 (2010/06/01) コメント大幅修正 1281 * @param url イベントURL 1282 */ 1283 public void setEventURL( final String url ) { 1284 eventURL = nval( getRequestParameter( url ), eventURL ); 1285 } 1286 1287 /** 1288 * 【TAG】パラメータをセットします。 1289 * 1290 * @og.tag 1291 * EditorParam等のパラメータを一括でセットします。 1292 * eventColumn利用時は{@XXXX}はリクエストパラメータではなく 1293 * xxxカラムの実際の値が利用されます。 1294 * 1295 * @og.rev 4.3.6.0 (2009/04/01) 1296 * @param prm パラメータ 1297 */ 1298 public void setParam( final String prm ) { 1299 param = nval( prm, param ); // ここでは{@XXXX}変換をしない 1300 } 1301 1302 /** 1303 * 【TAG】データベースへ接続する場合のID(初期値:null)。 1304 * 1305 * @og.tag 1306 * データベース接続を使用するエディター、レンデラーを使用する場合に使用する接続先IDを指定します。 1307 * カラムオブジェクトは、query処理ではなく、view処理時に適用されるため、データベース 1308 * 接続先を指定する必要があります。 1309 * 初期値は、null(DEFAULT 接続) です。 1310 * 1311 * @og.rev 5.7.6.2 (2014/05/16) 新規追加 1312 * 1313 * @param id 接続先ID 1314 */ 1315 public void setDbid( final String id ) { 1316 dbid = nval( getRequestParameter( id ),dbid ); 1317 } 1318 1319 /** 1320 * 【TAG】リクエスト情報の HTMLTag開始/終了文字(><) 存在チェックを実施するかどうか[true/false]を設定します 1321 * (初期値:USE_XSS_CHECK[={@og.value SystemData#USE_XSS_CHECK}])。 1322 * 1323 * @og.tag 1324 * クロスサイトスクリプティング(XSS)対策の一環としてless/greater than signについてのチェックを行います。 1325 * (><) が含まれていたエラーにする(true)/かノーチェックか(false)を指定します。 1326 * (初期値:システム定数のUSE_XSS_CHECK[={@og.value SystemData#USE_XSS_CHECK}])。 1327 * 1328 * @og.rev 5.1.7.0 (2010/06/01) 新規追加 1329 * 1330 * @param flag XSSチェック [true:する/false:しない] 1331 * @see org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK 1332 */ 1333 public void setXssCheck( final String flag ) { 1334 xssCheck = nval( getRequestParameter( flag ),xssCheck ); 1335 } 1336 1337 /** 1338 * 【TAG】MENU,DBMENUでSLABELを利用するかどうか[auto/true/false]を指定します(初期値:auto)。 1339 * 1340 * @og.tag 1341 * 通常はセレクトメニューは一覧とそれ以外で短縮ラベルの利用が自動で切り替わります。 1342 * 強制的にSLABELを利用させたい場合にこの属性をtrueにセットして下さい。 1343 * 標準はauto(自動)です。 1344 * auto/true/false以外を指定した場合はfalse扱いとします。 1345 * 1346 * @og.rev 5.5.1.0 (2012/04/03) 1347 * 1348 * @param prm SLABEL利用 [auto:自動/true:利用する/false:利用しない] 1349 */ 1350 public void setUseSLabel( final String prm ) { 1351 useSLabel = nval( getRequestParameter( prm ),useSLabel ); 1352 } 1353 1354 /** 1355 * 【TAG】eventColumn実行後のcallbak関数を指定します。 1356 * 1357 * @og.tag 1358 * eventColumnの動作終了後に実行するCallback関数の指定を行います。 1359 * 関数名のみを指定して下さい。 1360 * ex) sampleCallback()を実行する場合はeventCallback="sampleCallback" 1361 * 実行する関数の第一引数には自動的に次の要素が入った配列が渡されます 1362 * [0] 変更された子カラムのID属性値 1363 * [1] evnetColumn実行後の子カラムの値 1364 * [2] eventColumn実行前の子カラムの値 1365 * 1366 * この属性は、optionAttributesへの設定と同様の動作を行います。 1367 * 1368 * @og.rev 5.5.4.0 (2012/07/02) 新規追加 1369 * @og.rev 6.9.8.0 (2018/05/28) パラメータ引数が、未設定の場合の考慮不足 1370 * 1371 * @param callback callbak関数 1372 */ 1373 public void setEventCallback( final String callback ) { 1374 // optionAttributes扱いで登録します。 1375 final String clbk = getRequestParameter( callback ); 1376 if( StringUtil.isNotNull( clbk ) ){ 1377 add( "optionAttributes", "eventCallback='" + clbk + "'" ); 1378 } 1379 1380// // optionAttributes扱いで登録します。 1381// if( callback != null && callback.length() > 0 ){ 1382// add( "optionAttributes", "eventCallback='"+getRequestParameter( callback )+"'" ); 1383// } 1384 } 1385 1386 /** 1387 * 【HTML5】表示形式を指定します(初期値:text)。 1388 * 1389 * @og.tag 1390 * ColumnTagは、カラムリソースで作成される為、タイプは固定です。 1391 * しかし、HTML5 で追加された形式には、有用なタイプも存在する為、 1392 * それらへの書き換えをできるようにします。 1393 * よって、ここでは、従来型のタイプへの書き換えはできません。 1394 * (textだけは例外で戻せるようにします)。 1395 * 1396 * [search/tel/url/email/datetime/date/month/week/time/datetime-local/number/range/color] 1397 * が、設定できます。 1398 * 1399 * HTML5 の機能を有効にするには、ネイティブモードで動作させる必要があります。 1400// * ① USE_IE7_HEADER = "false" に設定する。 6.9.5.0 (2018/04/23) 廃止(false固定) 1401// * ② USE_HTML5_HEADER = "true" に設定する。 6.9.5.0 (2018/04/23) 廃止(true固定) 1402 * ③ IEのツール⇒互換表示設定で、互換表示に追加したWebサイトから削除する。 1403 * ④ 同上の設定で、イントラサイトを互換表示で表示するのチェックを外す。 1404 * 必要があります。 1405 * 1406 * <og:input type="text" /> テキストボックスを表示 1407 * 1408 * HTML5 で追加されたタイプ 1409 * <og:input type="search" /> 検索テキストの入力欄を作成する 1410 * <og:input type="tel" /> 電話番号の入力欄を作成する 1411 * <og:input type="url" /> URLの入力欄を作成する 1412 * <og:input type="email" /> メールアドレスの入力欄を作成する 1413 * <og:input type="datetime" /> UTC(協定世界時)による日時の入力欄を作成する 1414 * <og:input type="date" /> 日付の入力欄を作成する 1415 * <og:input type="month" /> 月の入力欄を作成する 1416 * <og:input type="week" /> 週の入力欄を作成する 1417 * <og:input type="time" /> 時間の入力欄を作成する 1418 * <og:input type="datetime-local" /> UTC(協定世界時)によらないローカル日時の入力欄を作成する 1419 * <og:input type="number" /> 数値の入力欄を作成する 1420 * <og:input type="range" /> レンジの入力欄を作成する 1421 * <og:input type="color" /> 色の入力欄を作成する 1422 * 1423 * @og.rev 5.7.1.0 (2013/12/06) HTML5 対応(新規追加) 1424 * @og.rev 6.3.4.0 (2015/08/01) Arrays.toString から String.join に置き換え。 1425 * @og.rev 6.4.3.4 (2016/03/11) String配列 から、Setに置き換えます。 1426 * 1427 * @param type HTML5用 [text/search/tel/url/email/datetime/date/month/week/time/datetime-local/number/range/color] 1428 */ 1429 public void setType( final String type ) { 1430 final String tp = getRequestParameter( type ); 1431 1432 if( check( tp , TYPE_SET ) ) { 1433 set( "type",tp ); 1434 } 1435 else { 1436 final String errMsg = "type 属性は、下記の中から選択してください。type=[" 1437 + tp + "] in [" + String.join( ", " , TYPE_SET ) + "]"; 1438 throw new HybsSystemException( errMsg ); 1439 } 1440 } 1441 1442 /** 1443 * 【TAG】このカラムに対するヘルプファイルを指定します(初期値:null)。 1444 * 1445 * @og.tag 1446 * 引数の url は、通常 そのカラムに関する詳細な説明を行っているファイルになります。 1447 * 簡易的な説明なら、カラムリソースの概要説明に入れれば、自動的に 1448 * title属性に入り、マウスオーバーでチルト表示されますが、それより少し 1449 * 複雑な説明を、html ファイルや、PDFファイルで行う事を想定しています。 1450 * デフォルトアイコンは、DEFAULT_CLMHELP_ICON です。 1451 * "http" や "/" , "../" などで始まる場合は、そのままのURLを使用します。 1452 * (初期値:DEFAULT_CLMHELP_ICON[={@og.value SystemData#DEFAULT_CLMHELP_ICON}])。 1453 * 1454 * @og.rev 6.3.2.0 (2015/07/10) help 属性の追加 1455 * 1456 * @param url helpファイルのURL(通常は、helpフォルダ以下のファイル名) 1457 */ 1458 public void setHelp( final String url ) { 1459 help = nval( getRequestParameter( url ),help ); 1460 } 1461 1462 /** 1463 * 【TAG】リアルタイムチェックを行うかどうかを指定します(初期値:true)。 1464 * 1465 * @og.tag 1466 * カラム単位でリアルタイムチェックを行うかどうかを設定をします。 1467 * タグに独自属性としてrealTimeCheck="true/false"を追記します。 1468 * falseを設定した場合にチェックが行われなくなります。 1469 * 初期値はリアルタイムチェックを行う(true)です。 1470 * 1471 * この属性は、optionAttributesへの設定と同様の動作を行います。 1472 * 引数の文字列の、true/false 判定を行っていません。そのままの文字列が設定されます。 1473 * JavaScript 側では、false 判定のみ行っているので、不正な文字列の場合は、 1474 * 初期値(true:リアルタイムチェックを行う)が適用されます。 1475 * これは、Ver5 とロジックを合わせておくための処置です。 1476 * 1477 * @og.rev 5.9.32.2 (2018/05/18) 新規追加 1478 * @og.rev 6.9.8.0 (2018/05/28) Ver5 とロジックを合わせます。 1479 * 1480 * @param flag リアルタイムチェックを行うかどうか [true:行う/false:行わない] 1481 */ 1482 public void setUseRealTimeCheck( final String flag ) { 1483 // optionAttributes扱いで登録します。 1484 final String rtcf = getRequestParameter( flag ); 1485 1486 if( StringUtil.isNotNull( rtcf ) ){ 1487 add( "optionAttributes", "realTimeChk=\"" + rtcf + "\"" ); // 連結時のスペースは、Attributes クラスで処理 1488 } 1489 1490// // optionAttributes扱いで登録します。 1491// final boolean useRtc = nval( getRequestParameter( flag ) , true ); 1492// 1493// if( !useRtc ) { // true 以外の場合のみ、optionAttributes に属性を追加します。 1494// add( "optionAttributes", "realTimeChk=\"false\"" ); // 連結時のスペースは、Attributes クラスで処理 1495// } 1496 } 1497 1498 /** 1499 * 【TAG】日付送り戻し機能を有効にするかどうか[true:有効/false:無効]指定します(初期値:true)。 1500 * 1501 * @og.tag 1502 * 編集種別が年月(YM)、年月日(YMD)、年月日(YMD2)のとき、日付送り戻し機能の 1503 * 有効(true)/無効(false)を指定します。 1504 * イベントカラム(親カラム)を設定し、param属性に定義したSQL文を実行させたい場合には、 1505 * false を指定します。 1506 * 1507 * @og.rev 8.1.2.3 (2022/05/20) 日付送り戻し不具合対応(useDateFeed 属性追加) 1508 * 1509 * @param flag 日付送り戻し機能有無 [true:有効/false:無効] 1510 */ 1511 public void setUseDateFeed( final String flag ) { 1512 useDateFeed = nval( getRequestParameter( flag ),useDateFeed ); 1513 } 1514 1515 /** 1516 * 【TAG】隠しフィールドを作成するかどうか[true/false]指定します (初期値:false)。 1517 * 1518 * @og.tag 1519 * 書き込み不可(writable="false" 又は、disabled)のとき、リクエスト変数を使用したい場合に 1520 * true を指定します。 1521 * 初期値は、false です。 1522 * 1523 * @og.rev 8.3.1.0 (2022/10/14) 隠しフィールドの作成対応(useHidden 属性追加) 1524 * 1525 * @param flag 隠しフィールドを作成 [true:する/false:しない] 1526 */ 1527 public void setUseHidden( final String flag ) { 1528 useHidden = nval( getRequestParameter( flag ),useHidden ); 1529 } 1530 1531 /** 1532 * ヘルプファイル へのリンクを生成します。 1533 * 1534 * @og.rev 6.3.2.0 (2015/07/10) help 属性の追加。 1535 * @og.rev 6.4.2.0 (2016/01/29) alt属性にtitle属性を追記。 1536 * @og.rev 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 1537 * @og.rev 7.3.2.3 (2021/04/09) システム定数のICON_DIRを使用します。 1538 * 1539 * @param url helpファイルのURL(通常は、helpフォルダ以下のファイル名) 1540 * 1541 * @return helpファイルのための aタグ 1542 * @see #setHelp( String ) 1543 * @og.rtnNotNull 1544 */ 1545 private String makeHelpLink( final String url ) { 1546 if( url != null ) { 1547 // 7.3.2.3 (2021/04/09) システム定数のICON_DIRを使用します。 1548// final String JSP = HybsSystem.sys( "JSP" ); 1549 final String icon = HybsSystem.sys( "JSP_ICON" ) + "/" + HybsSystem.sys( "DEFAULT_CLMHELP_ICON" ); 1550 1551// final String img = "<img src=\"" + JSP + icon + "\" alt=\"Help\" title=\"Help\" />"; // 6.4.2.0 (2016/01/29) 1552 final String img = "<img src=\"" + icon + "\" alt=\"Help\" title=\"Help\" >"; // 7.3.2.3 (2021/04/09) 1553 1554 return XHTMLTag.link( 1555 new Attributes() 1556 .set( "href" , makeUrl( url ) ) 1557 .set( "body" , img ) 1558 .set( "target" , "_blank" ) 1559 .set( "class" , "clmHelplink" ) 1560 ); 1561 } 1562 return "" ; 1563 } 1564 1565 /** 1566 * このオブジェクトの文字列表現を返します。 1567 * 基本的にデバッグ目的に使用します。 1568 * 1569 * @return このクラスの文字列表現 1570 * @og.rtnNotNull 1571 */ 1572 @Override 1573 public String toString() { 1574 return ToString.title( this.getClass().getName() ) 1575 .println( "VERSION" ,VERSION ) 1576 .println( "tdFlag" ,tdFlag ) 1577 .println( "addNoValue" ,addNoValue ) 1578 .println( "name" ,name ) 1579 .println( "value" ,value ) 1580 .println( "writable" ,writable ) 1581 .println( "defaultVal" ,defaultVal ) 1582// .println( "useDefVal" ,useDefVal ) // 8.4.3.0 (2023/03/31) Delete 1583 .println( "colspan" ,colspan ) 1584 .println( "rowspan" ,rowspan ) 1585 .println( "nextForm" ,nextForm ) 1586 .println( "useRequestValue" ,useRequestValue) 1587 .println( "viewSize" ,viewSize ) 1588 .println( "fieldSize" ,fieldSize ) // 6.2.0.0 (2015/02/27) 1589 .println( "maxlength" ,maxlength ) 1590 .println( "codeName" ,codeName ) 1591 .println( "param" ,param ) // 8.2.1.0 (2022/07/15) 1592 .println( "body" ,StringUtil.htmlFilter( body ) ) 1593 .println( "Other..." ,getAttributes().getAttribute() ) 1594 .fixForm().toString() ; 1595 } 1596}