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 021 import static org.opengion.fukurou.util.StringUtil.nval ; 022 import org.opengion.fukurou.util.XHTMLTag; 023 024 /** 025 * TagSupport から継承されたサブクラスです? 026 * 027 * 汎用属? のsetterメソ?を持って?す? 028 * それ以外に、{@XXXX} 変数の対応と、lang属?のメソ?も用意して?す? 029 * 030 * ロケールは、ユーザー??の lang 属?をデフォルトで使用し? 031 * セ?されて???合?、リクエスト情報のロケールから取得します? 032 * 033 * ??は、{@XXXX} 変数が使用できます? 034 * これは、ServletRequest から、XXXX をキーに値を取り??こ?変数に 035 * 割り当てます?つまり?こ?XXXXをキーにリクエストすれ?? 036 * こ?変数に値をセ?することができます? 037 * 038 * http://localhost/query.jsp?KEY1=VLA1&KEY2=VAL2 039 * 040 * のようなリクエストで、{@KEY1} とすれば?VAL1 がセ?されます? 041 * 042 * こ?タグは、ラベル部?入力フィールド部???ブルタグの<td> 043 * により左右に?されます?HTML 表示時?、前後に<tr>タグで囲って, 044 * 整形できます? 045 * 046 * ※ readonly , disabled , autofocus[HTML5] , required[HTML5] は、論理属?です? 047 * 通常は、キーワード?みの?で、有効です? 048 * よって、readonly="false" としても?readonly と?キーワードが存在すると、有効になります? 049 * 記述? ?eadonly ②readonly="" ③readonly="readonly" の?種類が推奨されます? 050 * 「属?名? 「属??""?「属??"属??? 051 * フレー?ーク側の問題として、①?の渡し方は他?属?との関係や、動?リクエスト変数の処?? 052 * 関係で、③を利用します?また?動的?の為に、④readonly="[true/false]" も受け付けます? 053 * ??は、readonly="true" の場合?、readonly="readonly" を作?し?readonly="false" の場合?? 054 * なにも作?しな??処?行って?す? 055 * 056 * @og.group 画面部? 057 * 058 * @version 4.0 059 * @author Kazuhiko Hasegawa 060 * @since JDK5.0, 061 */ 062 abstract class HTMLTagSupport extends CommonTagSupport { 063 // 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します? 064 private String mustType = null; // 5.2.1.0 (2010/10/01) 065 066 /** 067 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 068 * 069 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 070 * @og.rev 4.0.0.0 (2005/11/30) ロール を?慮します? 071 * @og.rev 4.3.0.0 (2008/07/04) ロールモード?ルチ対? 072 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 073 * 074 * @return 後続?? 075 */ 076 @Override 077 public int doEndTag() { 078 debugPrint(); // 4.0.0 (2005/02/28) 079 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属?対? 080 if( useTag() ) { 081 // 4.0.0 (2005/11/30) ??ロールが?アクセス許可の場合?、?力します? 082 // if( getUser().isAccess( get( "roles" ) ) ) { 083 // jspPrint( makeTag() ); 084 // } 085 086 // 4.3.0.0 (2008/07/04) ロールモード?ルチ対? 087 if( getUser().isAccess( get( "roles" ) ) ) { 088 jspPrint( makeTag() ); 089 } 090 } 091 return(EVAL_PAGE); 092 } 093 094 /** 095 * タグリブオブジェクトをリリースします? 096 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 097 * 098 * @og.rev 5.2.1.0 (2010/10/01) mustType 属?を追?? 099 */ 100 @Override 101 protected void release2() { 102 super.release2(); 103 mustType = null; // 5.2.1.0 (2010/10/01) 104 } 105 106 /** 107 * ボタンを作?します? 108 * 109 * <button type="submit" name="名前" value="値"> 110 * 111 * @return ボタンタグ?? 112 */ 113 abstract protected String makeTag() ; 114 115 /** 116 * 【HTML】要?対して固有?名前(id)をつける場合に設定します? 117 * 118 * @og.tag 119 * 特別な使用方法として、id="FOCUS" とすることで、フィールド系要? 120 * フォーカスを移動させます?これは、そのペ?ジ?唯?? id 属?として使用ください? 121 * 122 * ※ HTML5 より、autofocus属?の使用が可能になりました? 123 * 124 * @param id 固有?名前 125 */ 126 @Override 127 public void setId( final String id ) { 128 set( "id",getRequestParameter( id ) ); 129 } 130 131 /** 132 * 【HTML】要?対して class 属?を設定します? 133 * 134 * @og.tag 135 * Javaの?使用上?class で作?できな?め?代用として 136 * clazz を使用して?す? 137 * html で作?される属?は?class で作?されます? 138 * 139 * @og.rev 3.5.0.0 (2003/09/17) set ではなく?add を利用します? 140 * 141 * @param cls classを表す文字? 142 */ 143 public void setClazz( final String cls ) { 144 add( "class",getRequestParameter( cls ) ); // 3.5.5.9 (2004/06/07) セパレータ引数付きのメソ?に変更 145 } 146 147 /** 148 * 【HTML】要???と他?属?値の??lang,xml:lang)を指定します? 149 * 150 * @og.tag 151 * HTMLの?属?に使われます??する?は、ISO 639で規定されて?「?コード?です? 152 * [ja/en/zh/…]などのほかに、en-US:アメリカ英語?en-cockney:コ?ニ?英?など? 153 * 副?を?する方法も定められて?す? 154 * ここでは、lang と xml:lang の両方に同じ値がセ?されます? 155 * タグの language 属?とは使用用途が異なります? 156 * 157 * @og.tag lang セ? 158 * 159 * @param lang ?[ja/en/zh/…] 160 */ 161 public void setLang( final String lang ) { 162 String lng = getRequestParameter( lang ); 163 if( lng != null ) { 164 set( "lang",lng ); 165 set( "xml:lang",lng ); 166 } 167 } 168 169 /** 170 * 【HTML】文字表記?方?dir)を指定します? 171 * 172 * @og.tag 173 * 当該要??書字方向を?する属?です? 174 * ltr で、左から右に、rtl で、右から左に並べます? 175 * 176 * @param dir (ltr:左から右、rtl:右から左 ) 177 */ 178 public void setDir( final String dir ) { 179 set( "dir",getRequestParameter( dir ) ); 180 } 181 182 /** 183 * 【HTML】要?対する補足?報(title)を設定します? 184 * 185 * @og.tag 186 * title セ?は、?タンなどに適用すると、?ウスオーバ?によりこ?メ?ージ? 187 * チップスのように表示されます?これを利用して、説明文を登録することが可能です? 188 * ここに登録した??が?メ?ージリソースに存在する場合?、そのメ?ージ? 189 * 存在しな??合?、そのままの値を設定します? 190 * 191 * @og.rev 3.5.5.8 (2004/05/20) メ?ージリソースから読み込んだ?を使用します? 192 * @og.rev 4.0.0.0 (2007/10/18) メ?ージリソース統? getResource().getMessage > getResource().getLabel ) 193 * 194 * @param title 補足?報(title) 195 */ 196 public void setTitle( final String title ) { 197 String str = nval( getRequestParameter( title ),null ); 198 if( str != null ) { 199 // set( "title",getResource().getMessage( str ) ); 200 set( "title",getResource().getLabel( str ) ); 201 } 202 } 203 204 /** 205 * 【HTML】この要?対して適用させるスタイルシー?style)を設定します? 206 * 207 * @og.tag 208 * タグにstyle属?を設定します?これは、キー:値; のセ?を?記述できます? 209 * 通常は、class属???id属?で登録しておき?lg;style type="text/css"> で 210 * 外部から?する方がソースは読み?くなります? 211 * 212 * @param style スタイルシー?style="color:red; font-size:24pt;" など) 213 */ 214 public void setStyle( final String style ) { 215 set( "style",getRequestParameter( style ) ); 216 } 217 218 /** 219 * 【TAG】その部品に対して変更が?来な??(readonly)?しま?サーバ?に送信され?? 220 * 221 * @og.tag 222 * INPUT/TEXTAREA 系に対して、指定可能です? 223 * readonly="readonly" , readonly="true" が指定された場合?、有効です? 224 * false も指定?としては、有効です?(大?小文字?区別も不? 225 * それ以外???、エラーとします? 226 * 227 * ※ readonly は、論理属?です? 228 * 229 * @og.rev 3.7.1.0 (2005/04/26) readonly,true,false が指定できるように変更? 230 * 231 * @param ronly 読み取り専用属?[readonly/true/false] 232 */ 233 public void setReadonly( final String ronly ) { 234 String readonly = nval( getRequestParameter( ronly ),null ); 235 if( readonly != null ) { 236 if( readonly.equalsIgnoreCase( "readonly" ) || 237 readonly.equalsIgnoreCase( "true" ) ) { 238 set( "readonly","readonly" ); 239 } 240 else if( ! readonly.equalsIgnoreCase( "false" ) ) { 241 String errMsg = "readonly には、[readonly,true,false]以外????できません? 242 + " readonly=[" + readonly + "]" + HybsSystem.CR ; 243 throw new HybsSystemException( errMsg ); 244 } 245 } 246 } 247 248 /** 249 * 【TAG】その部品に対して?択や変更が?来な??(disabled)?しま?サーバ?に送信されな?? 250 * 251 * @og.tag 252 * BUTTON/INPUT/OPTGROUP/OPTION/SELECT/TEXTAREA 系に対して、指定可能です? 253 * disabled="disabled" , disabled="true" が指定された場合?、有効です? 254 * false も指定?としては、有効です?(大?小文字?区別も不? 255 * それ以外???、エラーとします? 256 * 257 * ※ disabled は、論理属?です? 258 * 259 * @og.rev 3.7.1.0 (2005/04/26) disabled,true,false が指定できるように変更? 260 * 261 * @param dis 選択や変更が?来な??するかど?[disabled/true/false] 262 */ 263 public void setDisabled( final String dis ) { 264 String disabled = nval( getRequestParameter( dis ),null ); 265 if( disabled != null ) { 266 if( disabled.equalsIgnoreCase( "disabled" ) || 267 disabled.equalsIgnoreCase( "true" ) ) { 268 set( "disabled","disabled" ); 269 } 270 else if( ! disabled.equalsIgnoreCase( "false" ) ) { 271 String errMsg = "disabled には、[disabled/true/false]以外????できません? 272 + " disabled=[" + disabled + "]" + HybsSystem.CR ; 273 throw new HybsSystemException( errMsg ); 274 } 275 } 276 } 277 278 /** 279 * 【HTML】タブ?移動?(tabindex)を指定しま?0 ??32767)? 280 * 281 * @og.tag 282 * Tabキーを押したときに要?選択される?を指定します? 283 * 値には?択させた??番を数値で記述します? 284 * 285 * @param tabindex タブ?移動?(0 ??32767) 286 */ 287 public void setTabindex( final String tabindex ) { 288 set( "tabindex",getRequestParameter( tabindex ) ); 289 } 290 291 /** 292 * 【HTML】アクセスキー(alt+キーで直接??を割り当てます? 293 * 294 * @og.tag 295 * アクセスキーは、?ウスの使えな??も?リンクにジャンプする?ボタンを押す?入力フォー? 296 * フォーカスを移すなどの操作を簡単に行うことができるように??されたものです? 297 * Windows の「ファイル(F)」メニューにつ??、F と同じような働きをします? 298 * 299 * @param accesskey アクセスキー 300 */ 301 public void setAccesskey( final String accesskey ) { 302 set( "accesskey",getRequestParameter( accesskey ) ); 303 } 304 305 /** 306 * 【TAG】JavaScript などの HTML基本タグ以外?属?を?そ?ままタグとして使用します? 307 * 308 * @og.tag 309 * JavaScript などの HTML基本タグ以外?属?を?そ?まま 310 * タグとして使用します?<del>そ?ときに?')は?")に置き換えます?</del> 311 * 312 * @og.rev 3.1.0.1 (2003/03/26) (')?")に置き換え??て?のを止める? 313 * 314 * @param optionAttributes HTML基本タグ以外?属? 315 */ 316 public void setOptionAttributes( final String optionAttributes ) { 317 String optAttri = getRequestParameter( optionAttributes ); 318 if( optAttri != null && optAttri.length() > 0 ) { 319 set( "optionAttributes",optAttri ); 320 } 321 } 322 323 /** 324 * 【HTML】JavaScriptのイベン?onClick を設定しま??onClick="renew('query.jsp','QUERY');")? 325 * 326 * @og.tag 327 * onClick をセ?します? 328 * 例えば?lt;og:column name="KBSAKU" onClick="renew('query.jsp','QUERY');" /> 329 * のように?することで、?ル?ンメニューの絞込み検索が可能になります? 330 * 331 * @og.rev 3.5.0.0 (2003/09/17) 新規追? 332 * @og.rev 3.5.5.9 (2004/06/07) セパレータ付きの追?ソ?に変更 333 * 334 * @param onClick onClickイベン??onClick="renew('query.jsp','QUERY');") 335 */ 336 public void setOnClick( final String onClick ) { 337 add( "onClick",getRequestParameter( onClick ),";" ); 338 } 339 340 /** 341 * 【HTML】JavaScriptのイベン?onChange を設定しま??onChange="renew('query.jsp','QUERY');")? 342 * 343 * @og.tag 344 * onChange をセ?します? 345 * 例えば?lt;og:column name="KBSAKU" onChange="renew('query.jsp','QUERY');" /> 346 * のように?することで、?ル?ンメニューの絞込み検索が可能になります? 347 * 348 * @og.rev 3.5.0.0 (2003/09/17) 新規追? 349 * @og.rev 3.5.5.9 (2004/06/07) セパレータ付きの追?ソ?に変更 350 * 351 * @param onChange onChangeイベン??onChange="renew('query.jsp','QUERY');") 352 */ 353 public void setOnChange( final String onChange ) { 354 add( "onChange",getRequestParameter( onChange ),";" ); 355 } 356 357 /** 358 * 【HTML】JavaScriptのイベン?onBlur を設定しま??onBlur="this.value=value.toUpperCase();")? 359 * 360 * @og.tag 361 * onBlur は、フォーカスが離れたときに発生するイベントです? 362 * 363 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 364 * 365 * @param onBlur onBlurイベン??onBlur="this.value=value.toUpperCase();") 366 */ 367 public void setOnBlur( final String onBlur ) { 368 add( "onBlur",getRequestParameter( onBlur ),";" ); 369 } 370 371 /** 372 * 【HTML】JavaScriptのイベン?onFocus を設定します? 373 * 374 * @og.tag 375 * onFocus は、フォーカスされたときに発生するイベントです? 376 * 377 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 378 * 379 * @param onFocus onFocusイベン? 380 */ 381 public void setOnFocus( final String onFocus ) { 382 add( "onFocus",getRequestParameter( onFocus ),";" ); 383 } 384 385 /** 386 * 【HTML】JavaScriptのイベン?onSelect を設定します? 387 * 388 * @og.tag 389 * onSelect は、テキストフィール??ストエリアの?ストが 390 * 選択されたときに発生するイベントです? 391 * 392 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 393 * 394 * @param onSelect onSelectイベン? 395 */ 396 public void setOnSelect( final String onSelect ) { 397 add( "onSelect",getRequestParameter( onSelect ),";" ); 398 } 399 400 /** 401 * 【HTML】JavaScriptのイベン?ondblClick を設定します? 402 * 403 * @og.tag 404 * ondblClick は、?ウスで?ルクリ?されたときに発生するイベントです? 405 * 406 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 407 * 408 * @param ondblClick ondblClickイベン? 409 */ 410 public void setOndblClick( final String ondblClick ) { 411 add( "ondblClick",getRequestParameter( ondblClick ),";" ); 412 } 413 414 /** 415 * 【HTML】JavaScriptのイベン?onMouseDown を設定します? 416 * 417 * @og.tag 418 * onMouseDown は、?ウス?ンされたときに発生するイベントです? 419 * 420 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 421 * 422 * @param onMouseDown onMouseDownイベン? 423 */ 424 public void setOnMouseDown( final String onMouseDown ) { 425 add( "onMouseDown",getRequestParameter( onMouseDown ),";" ); 426 } 427 428 /** 429 * 【HTML】JavaScriptのイベン?onMouseUp を設定します? 430 * 431 * @og.tag 432 * onMouseUp は、?ウスア??されたときに発生するイベントです? 433 * 434 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 435 * 436 * @param onMouseUp onMouseUpイベン? 437 */ 438 public void setOnMouseUp( final String onMouseUp ) { 439 add( "onMouseUp",getRequestParameter( onMouseUp ),";" ); 440 } 441 442 /** 443 * 【HTML】JavaScriptのイベン?onMouseMove を設定します? 444 * 445 * @og.tag 446 * onMouseMove は、?ウスが移動されたときに発生するイベントです? 447 * 448 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 449 * 450 * @param onMouseMove onMouseMoveイベン? 451 */ 452 public void setOnMouseMove( final String onMouseMove ) { 453 add( "onMouseMove",getRequestParameter( onMouseMove ),";" ); 454 } 455 456 /** 457 * 【HTML】JavaScriptのイベン?onMouseOut を設定します? 458 * 459 * @og.tag 460 * onMouseOut は、?ウスが離れたときに発生するイベントです? 461 * 462 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 463 * 464 * @param onMouseOut onMouseOutイベン? 465 */ 466 public void setOnMouseOut( final String onMouseOut ) { 467 add( "onMouseOut",getRequestParameter( onMouseOut ),";" ); 468 } 469 470 /** 471 * 【HTML】JavaScriptのイベン?onMouseOver を設定します? 472 * 473 * @og.tag 474 * onMouseOver は、?ウスが重なったときに発生するイベントです? 475 * 476 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 477 * 478 * @param onMouseOver onMouseOverイベン? 479 */ 480 public void setOnMouseOver( final String onMouseOver ) { 481 add( "onMouseOver",getRequestParameter( onMouseOver ),";" ); 482 } 483 484 /** 485 * 【HTML】JavaScriptのイベン?onKeydown を設定します? 486 * 487 * @og.tag 488 * onKeydown は、キーが押されたときに発生するイベントです? 489 * 490 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 491 * 492 * @param onKeydown onKeydownイベン? 493 */ 494 public void setOnKeydown( final String onKeydown ) { 495 add( "onKeydown",getRequestParameter( onKeydown ),";" ); 496 } 497 498 /** 499 * 【HTML】JavaScriptのイベン?onKeypress を設定します? 500 * 501 * @og.tag 502 * onKeypress は、キーが押され続けて?ときに発生するイベントです? 503 * 504 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 505 * 506 * @param onKeypress onKeypressイベン? 507 */ 508 public void setOnKeypress( final String onKeypress ) { 509 add( "onKeypress",getRequestParameter( onKeypress ),";" ); 510 } 511 512 /** 513 * 【HTML】JavaScriptのイベン?onKeyup を設定します? 514 * 515 * @og.tag 516 * onKeyup は、キーが押された状態から離されたときに発生するイベントです? 517 * 518 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 519 * 520 * @param onKeyup onKeyupイベン? 521 */ 522 public void setOnKeyup( final String onKeyup ) { 523 add( "onKeyup",getRequestParameter( onKeyup ),";" ); 524 } 525 526 /** 527 * 【HTML5】?力?補を提示して入力?容を?動補完する[on/off]??期?はon?? 528 * 529 * @og.tag 530 * HTML5から追?れた新機?です? 531 * オートコンプリートを有効にする場合?、on 、無効にする場合?、off を設定します? 532 * 初期値は、on(有効) です? 533 * 534 * <datalist> タグを使用して、?力?補となるデータリストを定義できます? 535 * ?ータのリスト?目は?option>で定義します? <datalist>をサポ?トしたブラウザでは? 536 * <option>で?された値がユーザーに対して入力?補として提案表示されます? 537 * <input>のlist属?の値と<datalist>のid属?の値を同じにして、?力? 538 * ??タリストを関連付けます? 539 * 540 * 利用可能type:[text,search,url,tel,email,password,datetime,date,month,week,time,datetime-local,number,range,color] 541 * 542 * <pre> 543 * <og:input type="text" name="yourarea" autocomplete="on" list="tokyo" /> 544 * 545 * <og:datalist id="tokyo" > 546 * <og:option value="渋谷" /> 547 * <og:option value="新宿" /> 548 * <og:option value="?? /> 549 * </og:datalist>< 550 * </pre> 551 * 552 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 553 * 554 * @param autocomplete 入力?補?自動補完?設?[on/off]??期?はon?? 555 * @see <a href="http://www.htmq.com/html5/input_autocomplete.shtml">autocomplete</a> 556 */ 557 public void setAutocomplete( final String autocomplete ) { 558 set( "autocomplete" , getRequestParameter( autocomplete ) ); 559 } 560 561 /** 562 * 【HTML5】指定した?力?カーソルが当たって自動的にフォーカスされます? 563 * 564 * @og.tag 565 * HTML5から追?れた新機?です? 566 * autofocus属?を指定すると、ウェブ?ージが表示された際に? 567 * ?した?力?カーソルが当たって自動的にフォーカスされます? 568 * 569 * autofocus="autofocus" , autofocus="true" が指定された場合?、有効です? 570 * false も指定?としては、有効です?(大?小文字?区別も不? 571 * それ以外???、エラーとします? 572 * 573 * 利用可能type:[text,search,url,tel,email,password] 574 * 575 * ※ autofocus は、論理属?です? 576 * 577 * <pre> 578 * <og:input type="text" name="userid" autofocus="autofocus" /> 579 * </pre> 580 * 581 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 582 * 583 * @param atfocus カーソルが当たって自動的にフォーカスされ? 584 * @see <a href="http://www.htmq.com/html5/input_autofocus.shtml">autofocus</a> 585 */ 586 public void setAutofocus( final String atfocus ) { 587 String autofocus = nval( getRequestParameter( atfocus ),null ); 588 if( autofocus != null ) { 589 if( autofocus.equalsIgnoreCase( "autofocus" ) || 590 autofocus.equalsIgnoreCase( "true" ) ) { 591 set( "autofocus","autofocus" ); 592 } 593 else if( ! autofocus.equalsIgnoreCase( "false" ) ) { 594 String errMsg = "autofocus には、[autofocus,true,false]以外????できません? 595 + " autofocus=[" + autofocus + "]" + HybsSystem.CR ; 596 throw new HybsSystemException( errMsg ); 597 } 598 } 599 } 600 601 /** 602 * 【HTML5】正規表現で入力?のパターンを指定します? 603 * 604 * @og.tag 605 * HTML5から追?れた新機?です? 606 * 正規表現を使って入力?のパターンを指定することができます? 607 * 608 * 利用可能type:[text,search,url,tel,email,password] 609 * 610 * <pre> 611 * <og:input type="text" name="userid" pattern="^[0-9A-Za-z]+$" /> ※半角英数 612 * </pre> 613 * 614 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 615 * 616 * @param pattern 正規表現で入力?のパターンを指? 617 * @see <a href="http://www.htmq.com/html5/input_pattern.shtml">pattern</a> 618 */ 619 public void setPattern( final String pattern ) { 620 set( "pattern",getRequestParameter( pattern ) ); 621 } 622 623 /** 624 * 【HTML5】?力?初期表示する?を指定します? 625 * 626 * @og.tag 627 * HTML5から追?れた新機?です? 628 * placeholder属?で?した?が?入力?初期値として表示されます? 629 * 例えば、テキストフィールドに初期値として?「検索するキーワードを入力してください? 630 * などのヒントを示してユーザーの操作を補助することができます? 631 * 632 * 利用可能type:[text,search,url,tel,email,password] 633 * 634 * <pre> 635 * <og:input type="search" name="q" placeholder="キーワードを入? /> 636 * </pre> 637 * 638 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 639 * 640 * @param placeholder 入力?初期表示する? 641 * @see <a href="http://www.htmq.com/html5/input_placeholder.shtml">placeholder</a> 642 */ 643 public void setPlaceholder( final String placeholder ) { 644 set( "placeholder",getRequestParameter( placeholder ) ); 645 } 646 647 /** 648 * 【HTML5】ユーザーに入力?補として提案するデータリスト?要??id属?の値を指定します? 649 * 650 * @og.tag 651 * HTML5から追?れた新機?です? 652 * ユーザーに入力?補として提案するデータリストタグ(<datalist>)のid属?? 653 * こ?、list 属?に設定することで?連付けができます? 654 * 655 * 利用可能type:[text,search,url,tel,email,datetime,date,month,week,time,datetime-local,number,range,color] 656 * 657 * <pre> 658 * <og:input type="search" name="q" autocomplete="on" list="keywords" /> 659 * <og:datalist id="keywords"> 660 * <og:option value="ウィキペディア" /> 661 * <og:option value="ウィルス対? /> 662 * <og:option value="ウィンドウズ" /> 663 * </og:datalist> 664 * </pre> 665 * 666 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 667 * 668 * @param list 入力?補として提案するデータリスト?id属?の値を指? 669 * @see <a href="http://www.htmq.com/html5/datalist.shtml">list</a> 670 */ 671 public void setList( final String list ) { 672 set( "list",getRequestParameter( list ) ); 673 } 674 675 /** 676 * 【HTML5】?力?入力できる??を指定します? 677 * 678 * @og.tag 679 * HTML5から追?れた新機?です? 680 * 数値型や日付型の入力?入力できる??を指定することができます? 681 * 682 * 利用可能type:[datetime,date,month,week,time,datetime-local,number,range] 683 * 684 * <pre> 685 * <og:input type="number" name="ninzu" min="1" max="4" />??1人以?人以? 686 * </pre> 687 * 688 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 689 * 690 * @param min 入力できる?? 691 * @see <a href="http://www.htmq.com/html5/input_min.shtml">min</a> 692 */ 693 public void setMin( final String min ) { 694 set( "min",getRequestParameter( min ) ); 695 } 696 697 /** 698 * 【HTML5】?力?入力できる?値を指定します? 699 * 700 * @og.tag 701 * HTML5から追?れた新機?です? 702 * 数値型や日付型の入力?入力できる?値を指定することができます? 703 * 704 * 利用可能type:[datetime,date,month,week,time,datetime-local,number,range] 705 * 706 * <pre> 707 * <og:input type="number" name="ninzu" min="1" max="4" />??1人以?人以? 708 * </pre> 709 * 710 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 711 * 712 * @param max 入力できる?値 713 * @see <a href="http://www.htmq.com/html5/input_min.shtml">max</a> 714 */ 715 public void setMax( final String max ) { 716 set( "max",getRequestParameter( max ) ); 717 } 718 719 /** 720 * 【HTML5】?力?刻??プ?を指定する? 721 * 722 * @og.tag 723 * HTML5から追?れた新機?です? 724 * step属?を指定すると?数値型や日付型の入力?刻??プ?を指定することができます? 725 * 726 * 利用可能type:[datetime,date,month,week,time,datetime-local,number,range] 727 * 728 * <pre> 729 * <og:input type="number" name="lot" step="0.5" />??単?.5 730 * </pre> 731 * 732 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 733 * 734 * @param step 入力?刻??プ? 735 * @see <a href="http://www.htmq.com/html5/input_step.shtml">step</a> 736 */ 737 public void setStep( final String step ) { 738 set( "step",getRequestParameter( step ) ); 739 } 740 741 /** 742 * 【HTML5】?力??を指定する? 743 * 744 * @og.tag 745 * HTML5から追?れた新機?です? 746 * 入力?目が?力??であることをブラウザに知らせることができます? 747 * 単独で、required 属?を使用できるようにしておきます? 748 * 749 * フレー?ークの入力??は、must 属?ですが、must 属?を指定した?合にも? 750 * シス?リソースの USE_HTML5_HEADER ?true に設定して?場合?? 751 * required 属?を?力します? 752 * 753 * 利用可能type:[text,search,url,tel,email,datetime,date,month,week,time,datetime-local,number,checkbox,radio,file] 754 * 755 * ※ required は、論理属?です? 756 * 757 * <pre> 758 * <og:input type="text" name="yourname" required="required" /> 759 * </pre> 760 * 761 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 762 * 763 * @param req 入力??を指? 764 * @see <a href="http://www.htmq.com/html5/input_required.shtml">required</a> 765 */ 766 public void setRequired( final String req ) { 767 String required = nval( getRequestParameter( req ),null ); 768 if( required != null ) { 769 if( required.equalsIgnoreCase( "required" ) || 770 required.equalsIgnoreCase( "true" ) ) { 771 set( "required","required" ); 772 } 773 else if( ! required.equalsIgnoreCase( "false" ) ) { 774 String errMsg = "required には、[required/true/false]以外????できません? 775 + " required=[" + required + "]" + HybsSystem.CR ; 776 throw new HybsSystemException( errMsg ); 777 } 778 } 779 } 780 781 /** 782 * 【TAG】ロールをセ?します? 783 * 784 * @og.tag 785 * ここで?したカラ?ールを?に、ユーザー毎?アクセス許可がチェ?されます? 786 * アクセス許可されな?、表示されません? 787 * こ?ロールを指定しな??合?、カラ?ソースのロールが使用されます? 788 * 789 * @og.rev 4.0.0.0 (2005/11/30) 新規追? 790 * 791 * @param roles ロール 792 */ 793 public void setRoles( final String roles ) { 794 set( "roles",getRequestParameter( roles ) ); 795 } 796 797 /** 798 * 【TAG】??入力を表す色に変えるかど?[true/false]を指定しま?初期値:false)? 799 * 800 * @og.tag 801 * 初期値は、??でな?"false") です? 802 * シス?リソースの USE_HTML5_HEADER が?true に?されて?場合?? 803 * HTML5 適用として、required 属?も?出力します? 804 * 805 * <og:input name="PN" must="true" /> 806 * 807 * @og.rev 5.2.1.0 (2010/10/01) 新規追? 808 * @og.rev 5.7.1.0 (2013/12/06) HTML5 対?required属?)? 809 * 810 * @param flag ??入力色に変えるかど?[true:??入?それ以???でない] 811 */ 812 public void setMust( final String flag ) { 813 mustType = nval( getRequestParameter( flag ),null ); 814 if( "true".equalsIgnoreCase( mustType ) ) { 815 mustType = "must"; 816 add( "class","must" ); 817 818 // 5.7.1.0 (2013/12/06) HTML5 対?required属?)? 819 if( isUseHTML5() ) { 820 set( "required","required" ); 821 } 822 } 823 } 824 825 /** 826 * 【TAG】選択??入?どれかひとつ??)を表す色[true/mustAny/そ?他]を指定しま?初期値:無??? 827 * 828 * @og.tag 829 * ?のカラ???、どれかひとつを??とする選択??入力を示す色を指定します? 830 * true また?、mustAny を設定すると、class属?に、mustAny がセ?されます? 831 * mustAny は、CSSファイルに初期設定されて?す?true また?、mustAny 以外?値をセ? 832 * すると、その値がそのまま、class属?にセ?されます?で?択??のグループ化? 833 * 可能です? 834 * なお?実際の選択??入力チェ?は、ここではなく?columnCheck タグで?が?です? 835 * 自動???、mustAny="true" ??場合?み有効です? 836 * 初期値は、無?です? 837 * 838 * @og.rev 5.2.1.0 (2010/10/01) 新規追? 839 * 840 * @param flag 選択??入の?[true/mustAny/そ?他] 841 */ 842 public void setMustAny( final String flag ) { 843 if( mustType == null ) { // must 属?と同時設定時には、must 属?を優先します? 844 mustType = nval( getRequestParameter( flag ),null ); 845 if( "true".equalsIgnoreCase( mustType ) ) { 846 mustType = "mustAny"; 847 } 848 add( "class",mustType ); // mustType == null の場合?、add されません? 849 } 850 } 851 852 /** 853 * mustType 属?を取得します? 854 * 855 * must , mustAny 属?を設定する?合に、mustType 属?を設定します? 856 * そ?設定された値を取り?します? 857 * 何も設定されて??態では、null を返します? 858 * 859 * @og.rev 5.2.1.0 (2010/10/01) 新規追?? 860 * 861 * @return mustType属? 862 */ 863 protected String getMustType() { 864 return mustType ; 865 } 866 867 /** 868 * must , mustAny 属?を?動化するためのhiddenタグを生成します? 869 * 870 * HybsSystem.MUST_KEY + mustType をキーに、指定?カラ?を?として 871 * hidden を作?します?こ?値?columnChack タグで拾って must 処?ます? 872 * なお?must , mustAny 属?を使用して???合?、null を返します? 873 * 874 * @og.rev 5.2.1.0 (2010/10/01) 新規追?? 875 * 876 * @param name must?するカラ??名称 877 * 878 * @return 自動化するためのhiddenタグ 879 */ 880 protected String makeMustHidden( final String name ) { 881 String rtn = null; 882 if( mustType != null ) { 883 rtn = XHTMLTag.hidden( HybsSystem.MUST_KEY + mustType, name ); 884 } 885 return rtn; 886 } 887 888 /** 889 * HTML5を使用するかど?(true:使用する/false:使用しな?を取得します? 890 * 891 * HTML5 の機?を有効にするには、ネイ?ブモードで動作させる?があります? 892 * ?USE_IE7_HEADER = "false" に設定する? 893 * ② USE_HTML5_HEADER = "true" に設定する? 894 * ③ IEの??ル⇒互換表示設定で、互換表示に追?たWebサイトから削除する? 895 * ④ 同上?設定で、イントラサイトを互換表示で表示するのチェ?を外す? 896 * ?があります? 897 * こ?メソ?で返すのは、①と②の設定ができて?ば true、そ?なければ、false を返します? 898 * 899 * (初期値:USE_IE7_HEADER[={@og.value org.opengion.hayabusa.common.SystemData#USE_IE7_HEADER}])? 900 * (初期値:USE_HTML5_HEADER[={@og.value org.opengion.hayabusa.common.SystemData#USE_HTML5_HEADER}])? 901 * 902 * @og.rev 5.7.1.0 (2013/12/06) 新規追? 903 * 904 * @return HTML5を使用するかど?(true:使用する/false:使用しな? 905 */ 906 protected boolean isUseHTML5() { 907 boolean useHTML5 = ! HybsSystem.sysBool( "USE_IE7_HEADER" ) // ?IE7互換モードが、false 908 && HybsSystem.sysBool( "USE_HTML5_HEADER" ); // ② HTML5 ヘッ???true 909 910 return useHTML5 ; 911 } 912 }