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