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