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 }