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 }