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