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 lbl="MSG0001" /> MessageResource プロパティの値を使用したã�?�¨ききはlbl属æ?を使ã�?�¾すã?
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 * @throws IOException 入出力エラーが発生したå?å�?
725 */
726 private void writeObject( final ObjectOutputStream strm ) throws IOException {
727 strm.defaultWriteObject();
728 }
729
730 /**
731 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
732 *
733 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
734 *
735 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
736 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
737 *
738 * @param strm ObjectInputStreamオブジェクãƒ?
739 * @see #release2()
740 * @throws IOException シリアライズに関する入出力エラーが発生したå?å�?
741 * @throws ClassNotFoundException クラスを見つけることができなかったå?å�?
742 */
743 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
744 strm.defaultReadObject();
745 option = new Options();
746 }
747
748 /**
749 * こã?オブジェクトã?æ–?—å?表現を返しますã?
750 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
751 *
752 * @return こã?クラスのæ–?—å?表現
753 */
754 @Override
755 public String toString() {
756 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
757 .println( "VERSION" ,VERSION )
758 .println( "td_flag" ,td_flag )
759 .println( "colspan" ,colspan )
760 .println( "value" ,value )
761 .println( "defaultVal" ,defaultVal )
762 .println( "multipleAll" ,multipleAll )
763 .println( "Other..." ,getAttributes().getAttribute() )
764 .fixForm().toString() ;
765 }
766 }