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 org.opengion.hayabusa.common.HybsSystem;
019 import org.opengion.hayabusa.common.HybsSystemException;
020 import org.opengion.fukurou.util.XHTMLTag;
021
022 import static org.opengion.fukurou.util.StringUtil.nval ;
023
024 /**
025 * 入力フィールドやボタンなどを作?するHTML拡張タグです?
026 *
027 * 簡易的な入力用タグとして、columnタグがあります?で??常は、columnタグをお使?さ??
028 * name 属?に ラベルリソース のキーを与えることで、ロケールにあわせたリソース?
029 * 使用して、画面に表示します?
030 * ロケールは、session 登録?の HybsSystem#LANG_KEY を?期?で使用し?
031 * language 属?で定義されて?場合?、そちらを優先します?
032 *
033 * @og.formSample
034 * ●形式?lt;og:input name=… value=… />
035 * ●body?あ?
036 *
037 * ●Tag定義??
038 * <og:input
039 * type 【HTML】表示形式[text/password/checkbox/radio/submit/reset/button/image/file]を指定しま?初期値:text)
040 * name 【HTML】名前を?しま?
041 * value 【HTML】このフィールドに設定する?を指定しま?
042 * caseKey 【TAG】このタグ自体を利用するかど?の条件キーを指定しま?初期値:null)
043 * caseVal 【TAG】このタグ自体を利用するかど?の条件値を指定しま?初期値:null)
044 * lbl 【TAG】ラベルリソースのラベルIDを指定しま?
045 * lbls 【TAG】ラベルをCSV形式で??しま?
046 * td 【TAG】テーブル形式? <td> タグを使用するかど?[yes/no/false]を指定しま?初期値:yes)
047 * colspan 【TAG】フィールド部?? colspan を指定しま?
048 * nextForm 【TAG】?力カーソルを指定されたname属?のフィールドへ自動的に移動しま?
049 * optionAttributes 【TAG】JavaScript などの HTML基本タグ以外?属?を?そ?ままタグとして使用しま?
050 * must 【TAG】??入力を表す色に変えるかど?[true/false]を指定しま?初期値:false)
051 * mustAny 【TAG】選択??入?どれかひとつ??)を表す色[true/mustAny/そ?他]を指定しま?初期値:無??
052 * size 【HTML】横??しま?typeがtextまた?passwordの場合??数で、それ以外?ピクセル)
053 * maxlength 【HTML】最大入力文字数を指定しま?typeがtextまた?passwordの場?
054 * checked 【HTML】type ?checkbox ?radio のとき?初めから選択された状態で表示しま?"checked"のみ?可)
055 * src 【HTML】type ?image の場合?送信ボタンとして利用する画像?URLをセ?しま?
056 * alt 【HTML】type ?image の場合で、画像が表示できな??合?代替?ストをセ?しま?
057 * accept 【HTML】type ?file の場合に、MIMEタイプをCSV形式で???来ま?
058 * usemap 【HTML】type ?image の場合?クライアントサイド?イメージマップ?URLを指定しま?
059 * ismap 【HTML】type ?image の場合に、サーバ?サイド?イメージマップを使用する場合に?しま?
060 * id 【HTML】要?対して固有?名前(id)をつける場合に設定しま?
061 * lang 【HTML】要???と他?属?値の??lang,xml:lang)を指定しま?
062 * dir 【HTML】文字表記?方?dir)を指定しま?
063 * title 【HTML】要?対する補足?報(title)を設定しま?
064 * style 【HTML】この要?対して適用させるスタイルシー?style)を設定しま?
065 * readonly 【TAG】その部品に対して変更が?来な??(readonly)?しま?サーバ?に送信され?
066 * disabled 【TAG】その部品に対して?択や変更が?来な??(disabled)?しま?サーバ?に送信されな?
067 * tabindex 【HTML】タブ?移動?(tabindex)を指定しま?0 ??32767)
068 * accesskey 【HTML】アクセスキー(alt+キーで直接??を割り当てま?
069 * clazz 【HTML】要?対して class 属?を設定しま?
070 * language 【TAG】タグ?で使用する?コード[ja/en/zh/…]を指定しま?
071 * onClick 【HTML】JavaScriptのイベン?onClick を設定しま??onClick="renew('query.jsp','QUERY');")
072 * onChange 【HTML】JavaScriptのイベン?onChange を設定しま??onChange="renew('query.jsp','QUERY');")
073 * onBlur 【HTML】JavaScriptのイベン?onBlur を設定しま??onBlur="this.value=value.toUpperCase();")
074 * onFocus 【HTML】JavaScriptのイベン?onFocus を設定しま?
075 * ondblClick 【HTML】JavaScriptのイベン?ondblClick を設定しま?
076 * onMouseDown 【HTML】JavaScriptのイベン?onMouseDown を設定しま?
077 * onMouseUp 【HTML】JavaScriptのイベン?onMouseUp を設定しま?
078 * onMouseMove 【HTML】JavaScriptのイベン?onMouseMove を設定しま?
079 * onMouseOut 【HTML】JavaScriptのイベン?onMouseOut を設定しま?
080 * onMouseOver 【HTML】JavaScriptのイベン?onMouseOver を設定しま?
081 * onSelect 【HTML】JavaScriptのイベン?onSelect を設定しま?
082 * onKeydown 【HTML】JavaScriptのイベン?onKeydown を設定しま?
083 * onKeypress 【HTML】JavaScriptのイベン?onKeypress を設定しま?
084 * onKeyup 【HTML】JavaScriptのイベン?onKeyup を設定しま?
085 * roles 【TAG】ロールをセ?しま?
086 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false)
087 * > ... Body ...
088 * </og:input>
089 *
090 * ●使用?
091 * <og:input name="OYA" /> lbl属?が指定されて???合?、name属?をキーにしてLabelResourceを読み取ります?
092 * <og:input name="PN" lbl="KO" /> lbl属?を指定することで、ラベル?を付替えることができます?
093 * <og:input name="PN" size="13" maxlength="11" /> 強制?サイズの変更をするとき?、size属?、maxlength属?を使用できます?
094 * <og:input name="OYA" td="false" /> 自動作?されるtdタグ?ベルを外すとき?td属?を使?す?
095 * <og:input name="OYA" td="no" /> 自動作?されるtdタグを外し、ラベルとフィールド?残します?
096 * <og:input name="PN" optionAttributes="onBlur='blr()'
097 * onFocus='fcs()'" />
098 * JavaScriptのイベントをコー?ングするとき?、optionAttributes属?を使?す?
099 * <og:input type="radio" name="OYA" /> ラベル部?入力フィールド部???ブルタグの<td>により左右に?されます?
100 *
101 * <table>
102 * <tr><og:input name="PN" value="{@PN}" /></tr>
103 * <tr><og:input name="CD" value="{@CD}" /></tr>
104 * </table>
105 *
106 * <table>
107 * <tr><og:input name="PN" value="{@PN}" >部品?力フィール?lt;/og:input></tr>
108 * <tr><og:input name="CD" value="{@CD}" >コードフィール?lt;/og:input></tr>
109 * </table>
110 * HTML 表示時?、前後に<tr>タグで囲って,整形できます?
111 *
112 * <og:input name="A" nextForm="B" /> ?桁数入力後?フォー?B にフォーカスが移動します?
113 * <og:input name="B" />
114 *
115 * BODY 部?記述した値は、?力フィールド?直後にセ?されます?
116 * <og:input name="PN" >
117 * <button type="button" onclick="popup(???);return false;">
118 * <og:message lbl="POPUP" comment="▼" />
119 * </button>
120 * </og:input>
121 *
122 * @og.group 画面部?
123 *
124 * @version 4.0
125 * @author Kazuhiko Hasegawa
126 * @since JDK5.0,
127 */
128 public class InputTag extends HTMLTagSupport {
129 //* こ?プログラ??VERSION??を設定します? {@value} */
130 private static final String VERSION = "5.6.2.2 (2013/03/15)" ;
131
132 private static final long serialVersionUID = 562220130315L ;
133
134 private static final String CHECK_TYPE = "|text|password|checkbox|radio|submit|reset|button|image|file|hidden|" ;
135 // 4.0.0 (2005/01/31) HTML_LABEL_SEPARATOR ?boolean 変数として取得します?
136 private final String CLM = ( HybsSystem.sysBool( "HTML_LABEL_SEPARATOR" ) ) ? ":" : "" ;
137
138 private String td_flag = "yes"; // yes:<td> タグを使用 / false:フィールド?み / no:ラベルとフィール?
139 // 3.0.1.4 (2003/03/17) colspan 属?を追??
140 private String colspan = "";
141 // 3.5.4.2 (2003/12/15) nextForm 属?を追??
142 private String nextForm = null;
143
144 // 4.0.0 (2005/01/31) COLUMNS_MAXSIZE を定義しておきます?
145 private final int COLUMNS_MAXSIZE = HybsSystem.sysInt( "HTML_COLUMNS_MAXSIZE" ) ; // 表示フィールド?大きさ
146
147 // 4.0.0 (2007/05/30) BODY 部?記述した値は、?力フィールド?直後にセ?されます?
148 private String body = null;
149
150 /**
151 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします?
152 *
153 * @og.rev 4.0.0.0 (2007/05/30) 新規追?BODY部の評価)
154 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対?
155 *
156 * @return 後続????( EVAL_BODY_BUFFERED )
157 */
158 @Override
159 public int doStartTag() {
160 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対?
161 if( useTag() ) {
162 return( EVAL_BODY_BUFFERED ); // Body を評価する? extends BodyTagSupport ?
163 }
164 return ( SKIP_BODY ); // Body を評価しな?
165 }
166
167 /**
168 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします?
169 *
170 * @og.rev 4.0.0.0 (2007/05/30) 新規追?BODY部の評価)
171 *
172 * @return 後続????(SKIP_BODY)
173 */
174 @Override
175 public int doAfterBody() {
176 body = getBodyString();
177 return(SKIP_BODY);
178 }
179
180 /**
181 * タグリブオブジェクトをリリースします?
182 * キャ?ュされて再利用される?で、フィールド?初期設定を行います?
183 *
184 * @og.rev 2.0.0.4 (2002/09/27) カスタ?グの release() メソ?を?追?
185 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で?するよ?変更
186 * @og.rev 3.0.1.4 (2003/03/17) colspan 属?を追??
187 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ?
188 * @og.rev 3.5.4.2 (2003/12/15) nextForm 属?を追??
189 *
190 */
191 @Override
192 protected void release2() {
193 super.release2();
194 td_flag = "yes"; // table形式? <td> タグを使用するかど?
195 colspan = "";
196 nextForm = null; // 3.5.4.2 (2003/12/15)
197 }
198
199 /**
200 * 検索条件の入力用の?ストフィールドを作?します?
201 *
202 * ??ブルタグによりフィールド??されます?
203 * 使用時?、テーブルタグを前後に使用して下さ??
204 *
205 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で?するよ?変更
206 * @og.rev 2.0.1.0 (2002/10/10) ラベルとフィールド?セパレーターとして、コロン(??を使用するかど?を指定できる
207 * @og.rev 3.0.1.2 (2003/03/07) forward.jsp の代替用 CommonForwardTag を新規作?
208 * @og.rev 3.1.0.1 (2003/03/26) キャ?ュエントリーは、type="submit" の場合?み、登録する?
209 * @og.rev 3.1.1.0 (2003/03/28) forward.jsp 関係?処?削除する?
210 * @og.rev 3.1.1.0 (2003/03/28) radio ボタン等で、ラベルをクリ?しても?をセ?できるようにする?
211 * @og.rev 3.5.4.2 (2003/12/15) 入力カーソルを?動的に次のフィールドへ移動する機?を追?る?
212 * @og.rev 4.0.0.0 (2007/05/30) BODY 部?記述した値は、?力フィールド?直後にセ?されます?
213 * @og.rev 4.3.7.1 (2009/06/08) id=labelのclass?
214 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します?
215 * @og.rev 5.6.2.2 (2013/03/15) 自動must処??出力位置を変更
216 *
217 * @return 入力用の?ストフィールドタグ
218 */
219 @Override
220 protected String makeTag() {
221 if( get( "value" ) == null ) { set( "value","" ); }
222 if( getMsglbl() == null ) { setLbl( get( "name" ) ); }
223
224 // 3.5.4.2 (2003/12/15) 入力カーソルを?動的に次のフィールドへ移動する機?
225 if( nextForm != null ) {
226 String onKeyup = "nextForm(this,'" + nextForm + "'," + get( "maxlength" ) + ");" ;
227 set( "onKeyup",onKeyup );
228 }
229
230 String type = get( "type" );
231 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
232 // もう少しましな、別の方法を?る?があります?
233 if( "yes".equals( td_flag ) ) {
234 if( type != null && ( "radio".equals( type ) || "checkbox".equals( type ) )) {
235 if( get( "id" ) == null ) { set( "id",TaglibUtil.getTagId() ); }
236
237 rtn.append( "<td>" );
238 rtn.append( XHTMLTag.input( getAttributes() ) );
239 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
240 rtn.append( "</td>" );
241 rtn.append( "<td " );
242 rtn.append( colspan );
243 rtn.append( ">" );
244 rtn.append( "<label for=\"" );
245 rtn.append( get( "id" ) );
246 rtn.append( "\">" );
247 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
248 rtn.append( "</label>" );
249 // rtn.append( "</td>" );
250 }
251 else if( type != null && ( "submit".equals( type ) || "reset".equals( type ) || "button".equals( type ) ) ) {
252 set( "value",getMsglbl() );
253 rtn.append( "<td" );
254 rtn.append( colspan );
255 rtn.append( ">" );
256 rtn.append( XHTMLTag.input( getAttributes() ) );
257 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
258 rtn.append( "</td>" );
259 // rtn.append( "<td></td>" );
260 rtn.append( "<td>" );
261 }
262 else {
263 // 4.3.7.1 (2009/06/08) id=labelのclass?
264 // rtn.append( "<td id=\"label\">" );
265 rtn.append( "<td class=\"label\">" );
266 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
267 rtn.append( CLM );
268 rtn.append( "</td>" );
269 rtn.append( "<td" );
270 rtn.append( colspan );
271 rtn.append( ">" );
272 rtn.append( XHTMLTag.input( getAttributes() ) );
273 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
274 // rtn.append( "</td>" );
275 }
276 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); } // 5.6.2.2 (2013/03/15)
277 rtn.append( "</td>" );
278 }
279 else if( "no".equals( td_flag ) ) {
280 if( type != null && ( "radio".equals( type ) || "checkbox".equals( type ) )) {
281 rtn.append( "<label>" );
282 rtn.append( XHTMLTag.input( getAttributes() ) );
283 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
284 // 4.3.7.1 (2009/06/08) id=labelのclass?
285 // rtn.append( "<span id=\"label\">" );
286 rtn.append( "<span class=\"label\">" );
287 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
288 rtn.append( "</span>" );
289 rtn.append( "</label>" );
290 }
291 else if( type != null && ( "submit".equals( type ) || "reset".equals( type ) || "button".equals( type ) ) ) {
292 set( "value",getMsglbl() );
293 rtn.append( XHTMLTag.input( getAttributes() ) );
294 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
295 }
296 else {
297 // 4.3.7.1 (2009/06/08) id=labelのclass?
298 // rtn.append( "<span id=\"label\">" );
299 rtn.append( "<span class=\"label\">" );
300 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
301 rtn.append( CLM );
302 rtn.append( "</span>" );
303 rtn.append( XHTMLTag.input( getAttributes() ) );
304 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
305 }
306 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); } // 5.6.2.2 (2013/03/15)
307 }
308 else {
309 if( type != null && ( "submit".equals( type ) || "reset".equals( type ) || "button".equals( type ) ) ) {
310 set( "value",getMsglbl() );
311 rtn.append( XHTMLTag.input( getAttributes() ) );
312 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
313 }
314 else {
315 rtn.append( XHTMLTag.input( getAttributes() ) );
316 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
317 }
318 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); } // 5.6.2.2 (2013/03/15)
319 }
320
321 // 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します?
322 // 5.6.2.2 (2013/03/15) tdの外に出力される不正形を正しま?
323 // if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); }
324
325 return rtn.toString() ;
326 }
327
328 /**
329 * 【HTML】名前を?します?
330 *
331 * @og.tag
332 * <og:input name="PN" />
333 *
334 * @param name 名前
335 */
336 public void setName( final String name ) {
337 set( "name",getRequestParameter( name ) );
338 }
339
340 /**
341 * 【HTML】表示形式[text/password/checkbox/radio/submit/reset/button/image/file]を指定しま?初期値:text)?
342 *
343 * @og.tag
344 *
345 * <og:input type="text" /> ?スト??スを表示
346 * <og:input type="password" /> パスワード専用?スト??スを表示
347 * <og:input type="checkbox" /> チェ?ボックスを表示
348 * <og:input type="radio" /> ラジオボタンを表示
349 * <og:input type="submit" /> 送信実行?タンを表示
350 * <og:input type="reset" /> 入力したフィールド?容を?てリセ?
351 * <og:input type="button" /> ボタンを表示
352 * <og:input type="image" /> イメージを表示してクリ?した座標を返す
353 * <og:input type="file" /> ファイル名?力??スを表示
354 * <og:input type="hidden" /> 表示させずにサーバ?に送信する??タ
355 *
356 * @param type 表示形式[text/password/checkbox/radio/submit/reset/button/image/file]
357 */
358 public void setType( final String type ) {
359 String tp = getRequestParameter( type );
360 if( check( "|" + tp + "|" , CHECK_TYPE ) ) {
361 set( "type",tp );
362 }
363 else {
364 String errMsg = "type 属?は、下記?中から選択してください。type=["
365 + tp + " in [" + CHECK_TYPE + "]";
366 throw new HybsSystemException( errMsg );
367 }
368 }
369
370 /**
371 * 【HTML】このフィールドに設定する?を指定します?
372 *
373 * @og.tag
374 * type属?の値?radio"?checkbox"以外?場合?こ?属?は省略可能です?
375 *<og:input name="PN" value="syokichi" />
376 *
377 * @param value 初期値
378 */
379 public void setValue( final String value ) {
380 set( "value",getRequestParameter( value ) );
381 }
382
383 /**
384 * 【HTML】横??しま?typeがtextまた?passwordの場合??数で、それ以外?ピクセル)?
385 *
386 * @og.tag
387 * <og:input name="PN" size="20" />
388 *
389 * @param size 横?
390 */
391 public void setSize( final String size ) {
392 set( "size",getRequestParameter( size ) );
393 }
394
395 /**
396 * 【HTML】最大入力文字数を指定しま?typeがtextまた?passwordの場??
397 *
398 * @og.tag
399 * ??数はsize?を?得るが??た?合ユーザエージェント?スクロール機構を提供する?があります?
400 *こ?属?の初期値は「無制限?です?
401 *<og:input name="PN" maxlength="20" />
402 *
403 * @og.rev 3.5.4.2 (2003/12/15) ?入力制限数に応じたサイズ自動生成を入れます?
404 * @og.rev 3.5.4.5 (2004/01/23) CSSで処?る?合?クラス属?は、maxlength ???以下?場合とする?
405 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソ??XHTMLTag から DBColumn へ移?
406 *
407 * @param maxlength ?入力文字数
408 */
409 public void setMaxlength( final String maxlength ) {
410 String mlen = nval( getRequestParameter( maxlength ),null ) ;
411 set( "maxlength",mlen );
412 if( get( "size" ) == null && mlen != null ) {
413 // 4.0.0 (2005/01/31) getFieldSize メソ??XHTMLTag から DBColumn へ移?
414 int size = Integer.parseInt( mlen );
415 if( size > COLUMNS_MAXSIZE ) { size = COLUMNS_MAXSIZE; }
416 set( "size",String.valueOf( size ) );
417 }
418
419 // 3.5.4.5 (2004/01/23) 追?
420 if( mlen != null && mlen.length() == 1 ) {
421 char ch = mlen.charAt(0);
422 if( ch >= '1' && ch <= '5' ) {
423 add( "class", "S0" + ch ); // 3.5.5.9 (2004/06/07) セパレータ引数付きのメソ?に変更
424 }
425 }
426 }
427
428 /**
429 * 【HTML】type ?checkbox ?radio のとき?初めから選択された状態で表示しま?"checked"のみ?可)?
430 *
431 * @og.tag
432 *
433 * <og:input name="PN" type="checkbox" checked="checked" />
434 *
435 * @param ch 選択された状態にするかど?[checked:選択状?そ??なにもしない]
436 */
437 public void setChecked( final String ch ) {
438 String checked = getRequestParameter( ch );
439 if( "checked".equals( checked )) {
440 set( "checked","checked" );
441 }
442 }
443
444 /**
445 * 【HTML】type ?image の場合?送信ボタンとして利用する画像?URLをセ?します?
446 *
447 * @og.tag src セ?
448 *
449 * @param src 画像?URL
450 */
451 public void setSrc( final String src ) {
452 set( "src",getRequestParameter( src ) );
453 }
454
455 /**
456 * 【HTML】type ?image の場合で、画像が表示できな??合?代替?ストをセ?します?
457 *
458 * @og.tag alt セ?
459 *
460 * @param alt 代替?ス?
461 */
462 public void setAlt( final String alt ) {
463 set( "alt",getRequestParameter( alt ) );
464 }
465
466 /**
467 * 【HTML】type ?file の場合に、MIMEタイプをCSV形式で???来ます?
468 *
469 * @og.tag accept セ?
470 *
471 * @param accept MIMEタイ?CSV形?
472 */
473 public void setAccept( final String accept ) {
474 set( "accept",getRequestParameter( accept ) );
475 }
476
477 /**
478 * 【HTML】type ?image の場合?クライアントサイド?イメージマップ?URLを指定します?
479 *
480 * @og.tag usemap セ?
481 *
482 * @param usemap クライアントサイド?イメージマップ?URL
483 */
484 public void setUsemap( final String usemap ) {
485 set( "usemap",getRequestParameter( usemap ) );
486 }
487
488 /**
489 * 【HTML】type ?image の場合に、サーバ?サイド?イメージマップを使用する場合に?します?
490 *
491 * @og.tag ismap セ?
492 *
493 * @param ismap サーバ?サイド?イメージマップを使用する場合に??
494 */
495 public void setIsmap( final String ismap ) {
496 set( "ismap",getRequestParameter( ismap ) );
497 }
498
499 /**
500 * 【TAG】テーブル形式? <td> タグを使用するかど?[yes/no/false]を指定しま?初期値:yes)?
501 *
502 * @og.tag
503 * 通常(初期値:yes)は、テーブル形式?<td> タグを使用して、ラベルとフィールドを整列させます?
504 * no の場合?、tdタグを使用せず、ラベルとフィールドを連続して出力します?
505 * false は、ラベルを?力せず?フィールド?み出力します?
506 * <og:input name="PN" td="false" />
507 *
508 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false で?するよ?変更
509 *
510 * @param flag [yes:tdタグを使用/no:ラベルとフィール?false:フィールド?み]
511 */
512 public void setTd( final String flag ) {
513 String td = nval( getRequestParameter( flag ),td_flag );
514
515 if( check( "|" + td + "|" , "|yes|no|false|" ) ) {
516 td_flag = td;
517 }
518 else {
519 String errMsg = "td 属?は、下記?中から選択してください。td=["
520 + td + " in [|true|false|label|]";
521 throw new HybsSystemException( errMsg );
522 }
523 }
524
525 /**
526 * 【TAG】ラベルをCSV形式で??します?
527 *
528 * @og.tag
529 * シングルラベルの lbl 属?との違いは,ここではラベルを? カンマ区?で
530 * 渡すことが可能であることです?これにより?A,B,C" と?値に対して?
531 * "Aのラベル表示,Bのラベル表示,Cのラベル表示" と?具合に???
532 * 再合成します?
533 * これは、SQL??Order By 句で、ソート?を指定する?合などに便利です?
534 *
535 * <og:orderBy columns="MKNMJP,MKCD,MKNMEN" lbls="MKNMJP,MKCD,MKNMEN" />
536 *
537 * @og.rev 3.5.6.2 (2004/07/05) 先に配?に?してからリクエスト変数の値を取?
538 * @og.rev 5.2.2.0 (2010/11/01) setMsglbl ? ?setLbl に置換え
539 *
540 * @param lbls ?ラベルID(カンマ区?)
541 */
542 public void setLbls( final String lbls ) {
543
544 String[] array = getCSVParameter( lbls );
545
546 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
547
548 buf.append( getLabel( array[0] ) );
549 for( int i=1; i<array.length; i++ ) {
550 buf.append( "," );
551 buf.append( getLabel( array[i] ) );
552 }
553 // setMsglbl( buf.toString() );
554 setLbl( buf.toString() ); // 5.2.2.0 (2010/11/01) setMsglbl ? ?setLbl に置換え
555 }
556
557 /**
558 * 【TAG】フィールド部?? colspan を指定します?
559 *
560 * @og.tag
561 * 通常は、ラベルとフィールドが、別のtdで囲われます?しかし?場合によっては?
562 * フィールド部の長?ラ?ある場合?上下?カラ?の位置関係がおかしくなり?
563 * ラベルとフィールドが離れて表示されるケースがあります?
564 * こ?場合?長?ィールド部を持つカラ?、colspan 属?を指定すると?
565 * そ???カラ?割り当てることにより、上下?カラ?の位置関係を
566 * 調?ることが可能になります?
567 * 通常は? を指定して、フィールド?ラベル、フィールド?
568 * ?合わせ部???ィールドが適用されるよ?使用します?
569 *
570 * <og:input name="PN" colspan="3" />
571 *
572 * @og.rev 3.0.1.4 (2003/03/17) colspan 属?を追??
573 *
574 * @param sp フィールド部??colspan
575 */
576 public void setColspan( final String sp ) {
577 colspan = nval( getRequestParameter( sp ),colspan );
578 if( colspan.length() > 0 ) {
579 colspan = " colspan=\"" + colspan + "\" ";
580 }
581 }
582
583 /**
584 * 【TAG】?力カーソルを指定されたname属?のフィールドへ自動的に移動します?
585 *
586 * @og.tag
587 * JavaScript の onKeyup イベントを利用して、最大桁数まで入力すると?
588 * 次のフィールドに、?動的に飛?ように設定します?
589 * 引数は、次に飛?すフィールド? name 属?です?
590 * 実行するには、JavaScript の nextForm ファンクションが?です?(default.js で??
591 *
592 * @og.rev 3.5.4.2 (2003/12/15) 新規追?
593 *
594 * @param name 次にフォーカスを移すタグのname属?
595 */
596 public void setNextForm( final String name ) {
597 nextForm = nval( getRequestParameter( name ),nextForm );
598 }
599
600 /**
601 * こ?オブジェクト???表現を返します?
602 * 基本???目?使用します?
603 *
604 * @return こ?クラスの??表現
605 */
606 @Override
607 public String toString() {
608 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
609 .println( "VERSION" ,VERSION )
610 .println( "td_flag" ,td_flag )
611 .println( "colspan" ,colspan )
612 .println( "nextForm" ,nextForm )
613 .println( "CHECK_TYPE" ,CHECK_TYPE )
614 .println( "HTML_LABEL_SEPARATOR" ,CLM )
615 .println( "HTML_COLUMNS_MAXSIZE" ,COLUMNS_MAXSIZE )
616 .println( "Other..." ,getAttributes().getAttribute() )
617 .fixForm().toString() ;
618 }
619 }