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