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