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 */ 016 package org.opengion.hayabusa.taglib; 017 018 import static org.opengion.fukurou.util.StringUtil.nval; 019 020 import java.io.IOException; 021 import java.io.ObjectInputStream; 022 import java.io.ObjectOutputStream; 023 024 import org.opengion.fukurou.util.Options; 025 import org.opengion.fukurou.util.StringUtil; 026 import org.opengion.fukurou.util.TagBuffer; 027 import org.opengion.fukurou.util.XHTMLTag; 028 import org.opengion.hayabusa.common.HybsSystem; 029 import org.opengion.hayabusa.common.HybsSystemException; 030 031 /** 032 * プル?ンメニューを作?するHTML拡張タグです? 033 * 034 * プル?ンメニュー??選択肢は、selectタグの?であるoptionタグ? 035 * また?queryOptionタグによって?します? 036 * optionタグがセ?されな??合?、name属?の、コードリソース からoption??より? 037 * プル?ンメニューの選択肢を作?します? 038 * name 属?に ラベルリソース のキーを与えることで?ロケールにあわせたリソースを使用して? 039 * 画面に表示します?ロケールは、ユーザー??の lang 属?を?期?で使用し? 040 * セ?されて???合?、リクエスト情報のロケールから取得します? 041 * language 属?で定義されて?場合?、そちらを優先します? 042 * 043 * @og.formSample 044 * ●形式?lt;og:select name="…" /> 045 * ●body?あ?EVAL_BODY_INCLUDE:BODYをインクルードし、{@XXXX} は解析しません) 046 * 047 * ●Tag定義?? 048 * <og:select 049 * name ○?TAG】メニューの名称を指定しま???)? 050 * value 【TAG】?を指定しま? 051 * defaultVal 【TAG】value属?に値がセ?されて??き使用する、?期?を指定しま? 052 * lbl 【TAG】ラベルリソースのラベルIDを指定しま? 053 * must 【TAG】??入力を表す色に変えるかど?[true/false]を指定しま?初期値:false) 054 * mustAny 【TAG】選択??入?どれかひとつ??)を表す色[true/mustAny/そ?他]を指定しま?初期値:無?? 055 * addNoValue 【TAG】?なし?Optionを含めるかど?[true/false]を指定しま?初期値:false) 056 * td 【TAG】テーブル形式? <td> タグを使用するかど?[yes/no/false]を指定しま?初期値:yes) 057 * colspan 【TAG】フィールド部?? colspan を指定しま? 058 * optionAttributes 【TAG】JavaScript などの HTML基本タグ以外?属?を?そ?ままタグとして使用しま? 059 * size 【TAG】リスト??スとして表示する場合?表示行数を指定しま? 060 * multiple 【TAG】?選択を可能(multiple)にしま?初期値:未設? 061 * id 【HTML】要?対して固有?名前(id)をつける場合に設定しま? 062 * caseKey 【TAG】このタグ自体を利用するかど?の条件キーを指定しま?初期値:null) 063 * caseVal 【TAG】このタグ自体を利用するかど?の条件値を指定しま?初期値:null) 064 * caseNN 【TAG】指定?値が?null/ゼロ?? でな???Not Null=NN)は、このタグは使用されま?初期値:true) 065 * caseNull 【TAG】指定?値が?null/ゼロ?? の場合?、このタグは使用されま?初期値:true) 066 * lang 【HTML】要???と他?属?値の??lang,xml:lang)を指定しま? 067 * dir 【HTML】文字表記?方?dir)を指定しま? 068 * title 【HTML】要?対する補足?報(title)を設定しま? 069 * style 【HTML】この要?対して適用させるスタイルシー?style)を設定しま? 070 * disabled 【TAG】その部品に対して?択や変更が?来な??(disabled)?しま?サーバ?に送信されな? 071 * tabindex 【HTML】タブ?移動?(tabindex)を指定しま?0 ??32767) 072 * clazz 【HTML】要?対して class 属?を設定しま? 073 * language 【TAG】タグ?で使用する?コード[ja/en/zh/…]を指定しま? 074 * onClick 【HTML】JavaScriptのイベン?onClick を設定しま??onClick="renew('query.jsp','QUERY');") 075 * onChange 【HTML】JavaScriptのイベン?onChange を設定しま??onChange="renew('query.jsp','QUERY');") 076 * onBlur 【HTML】JavaScriptのイベン?onBlur を設定しま??onBlur="this.value=value.toUpperCase();") 077 * onFocus 【HTML】JavaScriptのイベン?onFocus を設定しま? 078 * ondblClick 【HTML】JavaScriptのイベン?ondblClick を設定しま? 079 * onMouseDown 【HTML】JavaScriptのイベン?onMouseDown を設定しま? 080 * onMouseUp 【HTML】JavaScriptのイベン?onMouseUp を設定しま? 081 * onMouseMove 【HTML】JavaScriptのイベン?onMouseMove を設定しま? 082 * onMouseOut 【HTML】JavaScriptのイベン?onMouseOut を設定しま? 083 * onMouseOver 【HTML】JavaScriptのイベン?onMouseOver を設定しま? 084 * onSelect 【HTML】JavaScriptのイベン?onSelect を設定しま? 085 * onKeydown 【HTML】JavaScriptのイベン?onKeydown を設定しま? 086 * onKeypress 【HTML】JavaScriptのイベン?onKeypress を設定しま? 087 * onKeyup 【HTML】JavaScriptのイベン?onKeyup を設定しま? 088 * autofocus 【HTML5】指定した?力?カーソルが当たって自動的にフォーカスされます? 089 * roles 【TAG】ロールをセ?しま? 090 * eventColumn 【TAG】イベントカラ?親カラ?を指定しま? 091 * eventURL 【TAG】イベントカラ?定時に呼び出すURL 092 * eventCallback 【TAG】eventColumn実行後?callbak関数?? 093 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 094 * > ... Body ... 095 * </og:select> 096 * 097 * ●使用? 098 * <og:select name="CDC"> CodeResource プロパティの値を使用した?き?code属?を使?す? 099 * <og:option code="CDC" /> 100 * </og:select> 101 * 102 * <og:select name="CDC"> 選択?目の?上に?を付け足すことも可能です? 103 * <og:option msg="MSG0001" /> MessageResource プロパティの値を使用した?ききはmsg属?を使?す? 104 * <og:option code="CDC" /> 105 * </og:select> 106 * 107 * <og:select name="CDC"> 選択?目の?上に?を付け足すことも可能です? 108 * <og:option lbl="CDC1" /> LabelResource プロパティの値を使用した?ききはlbl属?を使?す? 109 * <og:option code="CDC" /> 110 * </og:select> 111 * 112 * <og:select name="CDC" multiple="multiple"> 選択肢の中から?選択できるようにするとき?multiple属?を使?す? 113 * <og:option code="CDC" /> 114 * </og:select> 115 * 116 * <og:select name="CDC" disabled="disabled"> 選択不可にするとき?disabled属?を使?す? 117 * <og:option code="CDC" /> 118 * </og:select> 119 * 120 * <og:select name="CDC"> 選択肢をSELECT??結果から作?した?き?queryOptionタグと?合わせて使?す? 121 * <og:queryOption> 122 * select NOSYN,NOSYN,':',NMSYN from DB01 ORDER BY 1 123 * </og:queryOption> 124 * </og:select> 125 * 126 * <og:select name="CDC" eventColumn="OYA" > 親子関係?プル?ンを作る場? 127 * <og:queryOption> 128 * select NOSYN,NOSYN,':',NMSYN from DB01 129 * where CLM = "{@OYA}" ORDER BY 1 130 * </og:queryOption> 131 * </og:select> 132 * 133 * @og.group 選択データ制御 134 * 135 * @version 4.0 136 * @author Kazuhiko Hasegawa 137 * @since JDK5.0, 138 */ 139 public class SelectTag extends HTMLTagSupport implements OptionAncestorIF { 140 //* こ?プログラ??VERSION??を設定します? {@value} */ 141 private static final String VERSION = "5.7.1.0 (2013/12/06)" ; 142 143 private static final long serialVersionUID = 571020131206L ; 144 145 // 4.0.0 (2005/01/31) HTML_LABEL_SEPARATOR ?boolean 変数として取得します? 146 private final String CLM = ( HybsSystem.sysBool( "HTML_LABEL_SEPARATOR" ) ) ? ":" : "" ; 147 148 // 4.0.0 (2005/01/31) USE_MULTI_KEY_SELECT を定義しておきます? 149 private final boolean USE_MULTI_KEY_SELECT = HybsSystem.sysBool( "USE_MULTI_KEY_SELECT" ) ; 150 151 // 4.3.6.0 (2009/04/01) JSPの位置を取っておく 152 // private static final String JSP = HybsSystem.sys( "JSP" ); 153 154 private transient Options option = new Options(); 155 private String td_flag = "yes"; // yes:<td> タグを使用 / false:フィールド?み / no:ラベルとフィール? 156 157 // 3.0.1.3 (2003/03/11) colspan 属?を追?? 158 private String colspan = null; 159 160 // 3.5.4.0 (2003/11/25) value ,defaultVal 属?を追?? 161 private String value = null; 162 private String defaultVal = null; // value がセ?されて??き?初期値 163 private boolean multipleAll = false; // 3.8.0.9 (2005/10/17) ?選択可能時に全選択を設定する? 164 private String eventColumn = null; // 4.3.6.0 (2009/04/01) イベントカラ? 165 // private String eventURL = JSP + "/" + HybsSystem.sys( "EVENT_COLUMN_URL" ); // 4.3.6.0 (2009/04/01) 処?SPの設? 166 private String eventURL = null; // 5.1.9.0 (2010/08/01) 動的プル?ン不?合対? 167 168 // 4.1.2.1 (2008/03/13) must , mustAny 属?を?動化します? 169 // 5.2.1.0 (2010/10/01) must , mustAny 属?の処?、HTMLTagSupport に移します? 170 // private String mustType = null; // 4.1.2.1 (2008/03/13) 171 172 private String rawParam = null; // 5.1.7.0 (2010/06/01) 動的プル?ン実?直? 173 174 // 5.1.9.0 (2010/08/01) 値なし?OptionをSelectに含めるかど? 新規追? 175 private boolean addNoValue = false; // 互換性のため、?期?は、false になります? 176 177 /** 178 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 179 * 180 * @og.rev 5.0.2.0 (2009/11/01) ?パラメーターの選択に対? 181 * @og.rev 5.1.7.0 (2010/06/01) command=RENEWの場合?defaultValを無視する? 182 * @og.rev 5.1.9.0 (2010/08/01) addNoValue 対? 183 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 184 * @og.rev 5.3.7.0 (2011/07/01) 5.1.7.0 (2010/06/01)の対応で判定条件が?転して?バグを修正 185 * 186 * @return 後続????( EVAL_BODY_INCLUDE ) 187 */ 188 @Override 189 public int doStartTag() { 190 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 191 if( useTag() ) { 192 if( value == null ) { 193 // value = nval( getRequestValue( get( "name" ) ),defaultVal ); 194 // 5.1.7.0 (2010/06/01) command=RENEWの場合?defaultValを無視する? 195 String cmd = pageContext.getRequest().getParameter( "command" ); 196 if( "RENEW".equals( cmd ) ) { 197 value = StringUtil.array2line( getRequestValues( get( "name" ) ), "|" ); 198 } 199 else { 200 value = nval( StringUtil.array2line( getRequestValues( get( "name" ) ), "|" ),defaultVal ); 201 } 202 } 203 204 // 5.1.9.0 (2010/08/01) addNoValue 対?option を最初にセ?する? 205 if( addNoValue ) { 206 option.add( "<option value=\"\" ></option>" ); 207 } 208 209 return( EVAL_BODY_INCLUDE ); // Body インクルー? extends TagSupport ? 210 } 211 return ( SKIP_BODY ); // Body を評価しな? 212 } 213 214 /** 215 * タグリブオブジェクトをリリースします? 216 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 217 * 218 * @og.rev 2.0.0.4 (2002/09/27) カスタ?グの release() メソ?を?追? 219 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で?するよ?変更 220 * @og.rev 3.0.1.3 (2003/03/11) colspan 属?を追?? 221 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 222 * @og.rev 3.5.4.0 (2003/11/25) value ,defaultVal 属?を追?? 223 * @og.rev 3.8.0.9 (2005/10/17) ?選択可能時に全選択を設定する? 224 * @og.rev 4.1.2.1 (2008/03/13) must , mustAny 属?を?動化します? 225 * @og.rev 4.3.6.0 (2009/04/01) eventColumn,eventURL追? 226 * @og.rev 5.1.7.0 (2010/06/01) 動的プル?ン実?直? 227 * @og.rev 5.1.9.0 (2010/08/01) columnタグで動的プル?ンが動作しな??合に対? 228 * @og.rev 5.1.9.0 (2010/08/01) addNoValue 属?を追?? 229 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属?の処?、HTMLTagSupport に移します? 230 * 231 */ 232 @Override 233 protected void release2() { 234 super.release2(); 235 option = new Options(); 236 td_flag = "yes"; // table形式? <td> タグを使用するかど? 237 colspan = null; 238 value = null; 239 defaultVal = null; // value がセ?されて??き?初期値 240 multipleAll = false; // 3.8.0.9 (2005/10/17) ?選択可能時に全選択を設定する? 241 // mustType = null; // 4.1.2.1 (2008/03/13) // HTMLTagSupport に移します? 242 eventColumn = null; // 4.3.6.0 (2009/04/01) 243 // eventURL = JSP + "/" + HybsSystem.sys( "EVENT_COLUMN_URL" ); // 4.3.6.0 (2009/04/01) 244 eventURL = null; // 5.1.9.0 (2010/08/01) columnタグで動的プル?ンが動作しな??合に対? 245 rawParam = null; // 5.1.7.0 (2010/06/01) 動的プル?ン実?直? 246 addNoValue = false; // 5.1.9.0 (2010/08/01) 互換性のため、?期?は、false になります? 247 } 248 249 /** 250 * 入力用のプル?ンメニューを作?します? 251 * 252 * 表示???名タグは、あらかじめ作?済みの値をここでは受け取ります? 253 * hasSelect 属?の値に応じて?タグの作?方法?変わります? 254 * 255 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で?するよ?変更 256 * @og.rev 2.0.1.0 (2002/10/10) ラベルとフィールド?セパレーターとして、コロン(??を使用するかど?を指定できる 257 * @og.rev 3.0.1.3 (2003/03/11) colspan 属?を追?? 258 * @og.rev 3.5.4.0 (2003/11/25) value ,defaultVal 属?を追?? 259 * @og.rev 4.0.0.0 (2005/01/31) マルチセレクションのON/OFFをここで?? 260 * @og.rev 4.1.2.1 (2008/03/13) must , mustAny 属?を?動化します? 261 * @og.rev 4.3.6.0 (2009/04/01) eventColumn対? 262 * @og.rev 4.3.7.1 (2009/06/08) id=labelのclass? 263 * @og.rev 5.1.7.0 (2010/06/01) 動的プル?ン実?直? 264 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属?の処?、HTMLTagSupport に移します? 265 * @og.rev 5.5.3.0 (2012/06/01) idのセ?見直? 266 * @og.rev 5.6.2.2 (2013/03/15) 自動must処??出力位置を変更 267 * 268 * @return 表示?択用のプル?ンメニュータグ 269 */ 270 @Override 271 protected String makeTag() { 272 273 String name = get( "name" ); 274 if( getMsglbl() == null ) { setLbl( name ); } 275 276 if( colspan != null ) { 277 colspan = " colspan=\"" + colspan + "\" "; 278 } 279 else { 280 colspan = ""; 281 } 282 283 // 4.0.0 (2005/01/31) XHTMLTag.java より移? 284 if( USE_MULTI_KEY_SELECT ) { 285 set( "onkeydown", "setKeySelect(this);" ); 286 } 287 288 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 289 290 // 5.5.3.0 既にIDが指定されて?場合?nameをセ?しな? 291 if( get("id")==null || get("id").length() == 0 ){ 292 set( "id", name ); 293 } 294 295 // 4.3.6.0 (2009/04/01) eventColumnの対? 296 // 5.1.7.0 (2010/06/01) 動的プル?ン実?直? 297 // if( eventColumn != null && eventColumn.length() > 0 ) { 298 // String[] evntCols = StringUtil.csv2Array( eventColumn ); 299 // for( int i = 0; i < evntCols.length; i++ ) { 300 // // SelectTagは"DBMENU"をmakeColumnに渡す? 301 // String javaScript = 302 // "<script type=\"text/javascript\">" + 303 // "$(function(){$('#" + evntCols[i] + "').change(function(){" + 304 // "makeColumn('" + name + "','" + name + "',EC_" + name + ",'DBMENU','" + eventURL + "');}).change();});"+ 305 // "</script>" 306 // ; 307 // rtn.append( javaScript ); 308 // } 309 // } 310 311 String selTag = XHTMLTag.select( getAttributes(), option ); 312 313 // 5.1.7.0 (2010/06/01) 動的プル?ン実?直? 314 if( eventColumn != null && eventColumn.length() > 0 ) { 315 String editor = null; 316 if( rawParam != null && rawParam.length() > 0 ) { 317 editor = "DBMENU"; 318 } 319 else { 320 editor = "MENU"; 321 } 322 addEventColumn( name, eventColumn, eventURL, "", editor, "", rawParam ); 323 TagBuffer span = new TagBuffer( "span" ); 324 span.add( "class", HybsSystem.EVENT_COLUMN_CLASS ); 325 span.add( HybsSystem.EVENT_COLUMN_ID, name ); 326 span.add( HybsSystem.EVENT_COLUMN_INITVAL, value ); 327 span.add( HybsSystem.EVENT_COLUMN_WRITABLE, "true" ); 328 span.setBody( selTag ); 329 selTag = span.makeTag(); 330 } 331 332 if( "yes".equals( td_flag ) ) { 333 // 4.3.7.1 (2009/06/08) id=labelのclass? 334 // rtn.append( "<td id=\"label\">" ); 335 rtn.append( "<td class=\"label\">" ); 336 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31) 337 rtn.append( CLM ); 338 rtn.append( "</td>" ); 339 rtn.append( "<td" ); 340 rtn.append( colspan ); 341 rtn.append( ">" ); 342 // rtn.append( XHTMLTag.select( getAttributes(), option ) ); 343 rtn.append( selTag ); 344 if( getMustType() != null ) { rtn.append( makeMustHidden( name ) ); } // 5.6.2.2 (2013/03/15) 345 rtn.append( "</td>" ); 346 } 347 else if( "no".equals( td_flag ) ) { 348 // 4.3.7.1 (2009/06/08) id=labelのclass? 349 // rtn.append( "<span id=\"label\">" ); 350 rtn.append( "<span class=\"label\">" ); 351 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31) 352 rtn.append( CLM ); 353 rtn.append( "</span>" ); 354 // rtn.append( XHTMLTag.select( getAttributes(), option ) ); 355 rtn.append( selTag ); 356 if( getMustType() != null ) { rtn.append( makeMustHidden( name ) ); } // 5.6.2.2 (2013/03/15) 357 } 358 else { 359 // rtn.append( XHTMLTag.select( getAttributes(), option ) ); 360 rtn.append( selTag ); 361 if( getMustType() != null ) { rtn.append( makeMustHidden( name ) ); } // 5.6.2.2 (2013/03/15) 362 } 363 364 // 4.1.2.1 (2008/03/13) must , mustAny 属?を?動化します? 365 // if( mustType != null ) { 366 // rtn.append( XHTMLTag.hidden( HybsSystem.MUST_KEY + mustType, name ) ); 367 // } 368 // 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します? 369 // 5.6.2.2 (2013/03/15) tdの外に出力される不正形を正しま? 370 // if( getMustType() != null ) { rtn.append( makeMustHidden( name ) ); } 371 372 return rtn.toString() ; 373 } 374 375 /** 376 * メニュー?の選択?目を追?ます? 377 * 378 * select タグのBODY要?? OptionTag よりアクセスされます? 379 * 380 * @og.rev 3.1.2.0 (2003/04/07) taglib パッケージ?で使用して???protected 化する? 381 * @param opt オプションタグ?? 382 */ 383 public void addOption( final String opt ) { 384 option.add( opt ); 385 } 386 387 /** 388 * 【TAG】メニューの名称を指定します? 389 * 390 * @og.tag メニューの名称を指定します? 391 * 392 * @param name 名称 393 */ 394 public void setName( final String name ) { 395 set( "name", getRequestParameter( name ) ); 396 } 397 398 /** 399 * 【TAG】リスト??スとして表示する場合?表示行数を指定します? 400 * 401 * @og.tag 表示行数を指定します? 402 * 403 * @param size 表示行数 404 */ 405 public void setSize( final String size ) { 406 set( "size",getRequestParameter( size ) ); 407 } 408 409 /** 410 * 【TAG】?選択を可能(multiple)にしま?初期値:未設?? 411 * 412 * @og.tag 413 * multiple 値?"multiple" また? "true" の場合??選択状態になります? 414 * また?"ALL" を設定する?合?、OptionTag上で、すべてのOption が選択状態に 415 * 初期設定されます? 416 * 大??小文字?種別はなくしますが、指定以外??が設定された場合?、エラーになります? 417 * 418 * @og.rev 3.8.0.9 (2005/10/17) ?選択可能時に全選択を設定する? 419 * 420 * @param multi ?選?"multiple" また? "true") ,初期値全選? "ALL" ) 421 */ 422 public void setMultiple( final String multi ) { 423 String multiple = nval( getRequestParameter( multi ),null ); 424 if( "multiple".equalsIgnoreCase( multiple ) || "true".equalsIgnoreCase( multiple ) ) { 425 set( "multiple","multiple" ); 426 } 427 else if( "ALL".equalsIgnoreCase( multiple ) ) { 428 set( "multiple","multiple" ); 429 multipleAll = true; 430 } 431 else if( ! ( "false".equalsIgnoreCase( multiple ) || multiple == null ) ) { 432 String errMsg = "multiple 属?には、[multiple,true,ALL] 以外?設定できません? 433 + "multiple=" + multi ; 434 throw new HybsSystemException( errMsg ); 435 } 436 } 437 438 /** 439 * 【TAG】??入力を表す色に変えるかど?[true/false]?しま?初期値:false)? 440 * 441 * @og.tag 442 * 初期値は、??でな?"false") です? 443 * 444 * @og.rev 4.0.0.0 (2005/02/28) must属?の登録を?id属?から、class 属?に変更します? 445 * @og.rev 4.1.2.1 (2008/03/13) must属?を?動化します? 446 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属?の処?、HTMLTagSupport に移します? 447 * 448 * @param flag ??入?("true")???でな?(それ以? 449 */ 450 // public void setMust( final String flag ) { 451 //// boolean must = nval( getRequestParameter( flag ),false ); 452 // mustType = nval( getRequestParameter( flag ),null ); 453 // if( "true".equalsIgnoreCase( mustType ) ) { 454 // mustType = "must"; 455 // add( "class","must" ); 456 // } 457 // } 458 459 /** 460 * 【TAG】選択??入?どれかひとつ??)を表す色(true|mustAny|そ??を指定しま?初期値:無??? 461 * 462 * @og.tag 463 * ?のカラ???、どれかひとつを??とする選択??入力を示す色を指定します? 464 * true また?、mustAny を設定すると、class属?に、mustAny がセ?されます? 465 * mustAny は、CSSファイルに初期設定されて?す?true また?、mustAny 以外?値をセ? 466 * すると、その値がそのまま、class属?にセ?されます?で?択??のグループ化? 467 * 可能です? 468 * なお?実際の選択??入力チェ?は、ここではなく?columnCheck タグで?が?です? 469 * 自動???、mustAny="true" ??場合?み有効です? 470 * 初期値は、無?です? 471 * 472 * @og.rev 3.8.0.9 (2005/10/17) 新規追? 473 * @og.rev 4.1.2.1 (2008/03/13) mustAny属?を?動化します? 474 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属?の処?、HTMLTagSupport に移します? 475 * 476 * @param flag 選択??入?どれかひとつ??)を表す色を指?true|mustAny|そ?? 477 */ 478 // public void setMustAny( final String flag ) { 479 // if( mustType == null ) { // must 属?と同時設定時には、must 属?を優先します? 480 // mustType = nval( getRequestParameter( flag ),null ); 481 // if( "true".equalsIgnoreCase( mustType ) ) { 482 // mustType = "mustAny"; 483 // } 484 // add( "class",mustType ); // mustType == null の場合?、add されません? 485 // } 486 // 487 //// String str = nval( getRequestParameter( flag ),null ); 488 //// if( str != null ) { 489 //// if( str.equalsIgnoreCase( "true" ) ) { 490 //// add( "class","mustAny" ); 491 //// } 492 //// else { 493 //// add( "class",str ); 494 //// } 495 //// } 496 // } 497 498 /** 499 * 【TAG】テーブル形式? <td> タグを使用するかど?[yes/no/false]を指定しま?初期値:yes)? 500 * 501 * @og.tag 502 * 初期値は、使用する("yes") です? 503 * 504 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で?するよ?変更 505 * @og.rev 5.5.1.0 (2012/04/03) エラーメ?ージ変更 506 * 507 * @param flag [yes:tdタグを使用/no:ラベルとフィール?false:フィールド?み] 508 */ 509 public void setTd( final String flag ) { 510 String td = nval( getRequestParameter( flag ),td_flag ); 511 512 if( check( "|" + td + "|" , "|yes|no|false|" ) ) { 513 td_flag = td; 514 } 515 else { 516 String errMsg = "Error in SelectTag [td]: " + td; 517 //errMsg = errMsg + " in [|true|false|label|] only used"; 518 errMsg = errMsg + " in [|yes|no|false|] only used"; // 5.5.1.0 (2012/04/03) 519 throw new HybsSystemException( errMsg ); 520 } 521 } 522 523 /** 524 * 【TAG】フィールド部?? colspan を指定します? 525 * 526 * @og.tag 527 * 通常は? を指定して、フィールド?ラベル、フィールド? 528 * ?合わせ部???ィールドが適用されるよ?使用します? 529 * 530 * <og:select name="CDK" colspan="3" /> 531 * 532 * @og.rev 3.0.1.3 (2003/03/11) colspan 属?を追?? 533 * 534 * @param sp フィールド部?? colspan 535 */ 536 public void setColspan( final String sp ) { 537 colspan = nval( getRequestParameter( sp ),colspan ); 538 } 539 540 /** 541 * 【TAG】?を指定します? 542 * 543 * @og.tag 544 * ここで?された値が?optionタグの値と同じであれば?択状態になります? 545 * 546 * <og:select name="CDC" value="{@ABC}" defaultVal="XYZ" > 547 * <og:option value="ABC" lbl="CDC1" /> 548 * <og:option value="XYZ" lbl="CDC2" /> 549 * </og:select> 550 * 551 * @og.rev 3.5.4.0 (2003/11/25) 新規作? 552 * @og.rev 5.0.2.0 (2009/11/01) ?パラメーターの選択に対? 553 * 554 * @param val 値 555 */ 556 public void setValue( final String val ) { 557 // value = nval( getRequestParameter( val ),value ); 558 value = nval( StringUtil.array2line( getRequestParameterValues( val ), "|" ),value ); 559 } 560 561 /** 562 * 値を外部から取り出します? 563 * 564 * OptionTag で、value を取り?して、?部の値と同じ場合??択状態にします? 565 * 566 * @og.rev 3.5.4.0 (2003/11/25) 新規作? 567 * @og.rev 5.7.1.0 (2013/12/06) OptionAncestorIF にする為、protected ?public 化する? 568 * 569 * @return ?に設定された値 570 */ 571 // protected String getValue() { 572 public String getValue() { 573 return value; 574 } 575 576 // /** 577 // * 親のカラ?取? 578 // * 579 // * QueryOptiontagで、eventColumnを取り?して生SQL?? 580 // * セ?ョンへの登録判断をしま? 581 // * 582 // * @og.rev 4.3.6.0 (2009/04/01) 583 // * 584 // * @return イベントカラ? 585 // */ 586 // protected String getEventColumn() { 587 // return eventColumn; 588 // } 589 590 /** 591 * 【TAG】イベントカラ?親カラ?を指定します? 592 * 593 * @og.tag 594 * 親子関係?カラ?作?する場合に利用します? 595 * queryOptionタグとセ?で利用して下さ?? 596 * 597 * ※詳細はcolumnTagのeventColumn属?の説明をご覧下さ?? 598 * 599 * @og.rev 4.3.6.0 (2009/04/01) 600 * 601 * @param col 親カラ? 602 */ 603 public void setEventColumn( final String col ) { 604 eventColumn = nval( getRequestParameter( col ), eventColumn ); 605 } 606 607 /** 608 * 【TAG】イベントカラ?定時に呼び出すURL? 609 * 610 * @og.tag 611 * イベントカラ?定時に部品を作?するJSPを指定します? 612 * 初期値はシス?リソースのEVENT_COLUMN_URLです? 613 * (例:eventURL="makeColumn_custom.jsp") 614 * 615 * ※詳細はcolumnTagのeventURL属?の説明をご覧下さ?? 616 * 617 * @og.rev 4.3.6.0 (2009/04/01) 618 * 619 * @param url 呼び出すURL 620 */ 621 public void setEventURL( final String url ) { 622 eventURL = nval( getRequestParameter( url ), eventURL ); 623 } 624 625 /** 626 * ?選択可能時に全選択を設定するかど?を返します? 627 * 628 * これは、上位?れ子?タグの OptionTag で、multipleAll を取り?して? 629 * true であれば、?選択に設定します? 630 * 631 * @og.rev 3.8.0.9 (2005/10/17) 新規作? 632 * @og.rev 5.7.1.0 (2013/12/06) OptionAncestorIF にする為、protected ?public 化する? 633 * 634 * @return 全選?true / 通常:false 635 */ 636 // protected boolean isMultipleAll() { 637 public boolean isMultipleAll() { 638 return multipleAll; 639 } 640 641 /** 642 * 【TAG】value属?に値がセ?されて??き使用する、?期?を指定します? 643 * 644 * @og.tag 645 * value属?に値がセ?されて??きに、?期?をセ?します? 646 * 647 * なお?commandがRENEWの場合?、このdefaultValは適用されません? 648 * これは、defaultValの値が埋め込まれた?が存在する画面に戻った際に? 649 * defaultValの?の値がnullとなって?場合に、defaultValの値が復?れると? 650 * 検索結果との不??が発生するためです? 651 * 652 * @og.rev 3.5.4.0 (2003/11/25) 新規作? 653 * @og.rev 5.0.2.0 (2009/11/01) ?パラメーターの選択に対? 654 * 655 * @param dv 初期値 656 */ 657 public void setDefaultVal( final String dv ) { 658 // defaultVal = nval( getRequestParameter( dv ),defaultVal ); 659 defaultVal = nval( StringUtil.array2line( getRequestParameterValues( dv ), "|" ),defaultVal ); 660 } 661 662 /** 663 * 【TAG】?なし?Optionを含めるかど?[true/false]を指定しま?初期値:false)? 664 * 665 * @og.tag 666 * カラ?プル?ンメニュー形式?場合?選択肢には通常??タベ?ス登録できる候補が 667 * 並びます?しかし?検索時には、?補を絞りたくな??しな?場合があり? 668 * そ?様な場合には、?なし?Optionを含める(true)ことで、対応可能です? 669 * 初期値:false(値なし?Optionを含めな?は?去の互換性を重視して?ため、column タグと異なります? 670 * 671 * @og.rev 5.1.9.0 (2010/08/01) 新規追? 672 * 673 * @param flag [true:含める/それ以?含めない] 674 */ 675 public void setAddNoValue( final String flag ) { 676 addNoValue = nval( getRequestParameter( flag ),addNoValue ); 677 } 678 679 /** 680 * パラメーター変換({@XXXX}の置き換えをしな?態?パラメーターをセ?します? 681 * 682 * @og.rev 5.1.7.0 (2010/06/01) 新規作?(動的プル?ン実?直? 683 * @og.rev 5.5.4.0 (2012/07/02) 予?対? 684 * 685 * @param param パラメーター 686 */ 687 public void setRawParam( final String param ) { 688 // rawParam = nval( param, rawParam ); 689 rawParam = nval( getReservedParameter(param), rawParam ); // 5.5.4.0 (2012/07/02) 690 } 691 692 /** 693 * 【TAG】eventColumn実行後?callbak関数?? 694 * 695 * @og.tag 696 * eventColumnの動作終?に実行するCallback関数の?を行います? 697 * 関数名?みを指定して下さ?? 698 * ?x) sampleCallback()を実行する?合?eventCallback="sampleCallback" 699 * 実行する関数の第?数には自動的に次の要?入った?列が渡されま? 700 * ?0] 変更された子カラ??ID属?値 701 * ?1] evnetColumn実行後?子カラ??値 702 * ?2] eventColumn実行前の子カラ??値 703 * 704 * こ?属?は、optionAttributesへの設定と同様?動作を行います? 705 * 706 * @og.rev 5.5.4.0 (2012/07/02) 新規追? 707 * 708 * @param callback callbak関数 709 */ 710 public void setEventCallback( final String callback ) { 711 // optionAttributes扱?登録します? 712 if( callback != null && callback.length() > 0 ){ 713 add( "optionAttributes", "eventCallback='"+getRequestParameter( callback )+"'" ); 714 } 715 } 716 717 /** 718 * シリアライズ用のカスタ?リアライズ書き込みメソ? 719 * 720 * @og.rev 4.0.0.0 (2006/09/31) 新規追? 721 * @serialData 722 * 723 * @param strm ObjectOutputStreamオブジェク? 724 */ 725 private void writeObject( final ObjectOutputStream strm ) throws IOException { 726 strm.defaultWriteObject(); 727 } 728 729 /** 730 * シリアライズ用のカスタ?リアライズ読み込みメソ? 731 * 732 * ここでは、transient 宣?れた?変数の??初期化が?なフィールド?み設定します? 733 * 734 * @og.rev 4.0.0.0 (2006/09/31) 新規追? 735 * @serialData 736 * 737 * @param strm ObjectInputStreamオブジェク? 738 * @see #release2() 739 */ 740 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException { 741 strm.defaultReadObject(); 742 option = new Options(); 743 } 744 745 /** 746 * こ?オブジェクト???表現を返します? 747 * 基本???目?使用します? 748 * 749 * @return こ?クラスの??表現 750 */ 751 @Override 752 public String toString() { 753 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 754 .println( "VERSION" ,VERSION ) 755 .println( "td_flag" ,td_flag ) 756 .println( "colspan" ,colspan ) 757 .println( "value" ,value ) 758 .println( "defaultVal" ,defaultVal ) 759 .println( "multipleAll" ,multipleAll ) 760 .println( "Other..." ,getAttributes().getAttribute() ) 761 .fixForm().toString() ; 762 } 763 }