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     * @og.group 画面部å“?
047     *
048     * @version  4.0
049     * @author   Kazuhiko Hasegawa
050     * @since    JDK5.0,
051     */
052    abstract class HTMLTagSupport extends CommonTagSupport {
053            // 5.2.1.0 (2010/10/01) must , mustAny 属æ?をè?動化しますã?
054            private String  mustType        = null;         // 5.2.1.0 (2010/10/01)
055    
056            /**
057             * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
058             *
059             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
060             * @og.rev 4.0.0.0 (2005/11/30) ロール をè?慮しますã?
061             * @og.rev 4.3.0.0 (2008/07/04) ロールモードã?ルチ対å¿?
062             * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
063             *
064             * @return      後続å?ç�?
065             */
066            @Override
067            public int doEndTag() {
068                    debugPrint();           // 4.0.0 (2005/02/28)
069                    // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
070                    if( useTag() ) {
071                            // 4.0.0 (2005/11/30) æŒ?®šã?ロールがã?アクセス許可の場合ã?、å?力しますã?
072            //              if( getUser().isAccess( get( "roles" ) ) ) {
073            //                      jspPrint( makeTag() );
074            //              }
075    
076                            // 4.3.0.0 (2008/07/04) ロールモードã?ルチ対å¿?
077                            if( getUser().isAccess( get( "roles" ) ) ) {
078                                    jspPrint( makeTag() );
079                            }
080                    }
081                    return(EVAL_PAGE);
082            }
083    
084            /**
085             * タグリブオブジェクトをリリースしますã?
086             * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
087             *
088             * @og.rev 5.2.1.0 (2010/10/01) mustType 属æ?を追åŠ??
089             */
090            @Override
091            protected void release2() {
092                    super.release2();
093                    mustType        = null;         // 5.2.1.0 (2010/10/01)
094            }
095    
096            /**
097             * ボタンを作æ?しますã?
098             *
099             * <button type="submit" name="名前" value="値">
100             *
101             * @return  ボタンタグæ–?­—å?
102             */
103            abstract protected String makeTag() ;
104    
105            /**
106             * 【HTML】要ç´?�«対して固有ã?名前(id)をつける場合に設定しますã?
107             *
108             * @og.tag
109             * 特別な使用方法として、id="FOCUS" とすることで、フィールド系要ç´?�«
110             * フォーカスを移動させますã?これは、そのペã?ジå†?�§唯ä¸?? id 属æ?として使用くださいã€?
111             *
112             * @param   id 固有ã?名前
113             */
114            @Override
115            public void setId( final String id ) {
116                    set( "id",getRequestParameter( id ) );
117            }
118    
119            /**
120             * 【HTML】要ç´?�«対して class 属æ?を設定しますã?
121             *
122             * @og.tag
123             * Javaのè¨?ªž使用上ã?class で作æ?できなã�?�Ÿめã?代用として
124             * clazz を使用してã�?�¾すã?
125             * html で作æ?される属æ?はã€?class で作æ?されますã?
126             *
127             * @og.rev 3.5.0.0 (2003/09/17) set ではなくã?add を利用しますã?
128             *
129             * @param   cls classを表す文字å?
130             */
131            public void setClazz( final String cls ) {
132                    add( "class",getRequestParameter( cls ) );      // 3.5.5.9 (2004/06/07) セパレータ引数付きのメソãƒ?ƒ‰に変更
133            }
134    
135            /**
136             * 【HTML】要ç´??å†?®¹と他ã?属æ?値のè¨?ª?lang,xml:lang)を指定しますã?
137             *
138             * @og.tag
139             * HTMLのè¨?ªž属æ?に使われますã?æŒ?®šするå?は、ISO 639で規定されてã�?‚‹「è¨?ªžコードã?ですã?
140             * [ja/en/zh/…]などのほかに、en-US:アメリカ英語ã?en-cockney:コãƒ?‚¯ニã?英èª?などã€?
141             * 副è¨?ªžをæŒ?®šする方法も定められてã�?�¾すã?
142             * ここでは、lang と xml:lang の両方に同じ値がセãƒ?ƒˆされますã?
143             * タグの language 属æ?とは使用用途が異なりますã?
144             *
145             * @og.tag lang セãƒ?ƒˆ
146             *
147             * @param   lang è¨?ªž[ja/en/zh/…]
148             */
149            public void setLang( final String lang ) {
150                    String lng = getRequestParameter( lang );
151                    if( lng != null ) {
152                            set( "lang",lng );
153                            set( "xml:lang",lng );
154                    }
155            }
156    
157            /**
158             * 【HTML】文字表記ã?方å�?dir)を指定しますã?
159             *
160             * @og.tag
161             * 当該要ç´??書字方向をæŒ?®šする属æ?ですã?
162             * ltr で、左から右に、rtl で、右から左に並べますã?
163             *
164             * @param   dir (ltr:左から右、rtl:右から左 )
165             */
166            public void setDir( final String dir ) {
167                    set( "dir",getRequestParameter( dir ) );
168            }
169    
170            /**
171             * 【HTML】要ç´?�«対する補足çš?ƒ…報(title)を設定しますã?
172             *
173             * @og.tag
174             * title セãƒ?ƒˆは、ã?タンなどに適用すると、ã?ウスオーバã?によりこã?メãƒ?‚»ージã�?
175             * チップスのように表示されますã?これを利用して、説明文を登録することが可能ですã?
176             * ここに登録したæ–?­—å?がã?メãƒ?‚»ージリソースに存在する場合ã?、そのメãƒ?‚»ージã‚?
177             * 存在しなã�??合ã?、そのままの値を設定しますã?
178             *
179             * @og.rev 3.5.5.8 (2004/05/20) メãƒ?‚»ージリソースから読み込んだæ–?­—を使用しますã?
180             * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ージリソース統å�? getResource().getMessage > getResource().getLabel )
181             *
182             * @param   title 補足çš?ƒ…報(title)
183             */
184            public void setTitle( final String title ) {
185                    String str = nval( getRequestParameter( title ),null );
186                    if( str != null ) {
187    //                      set( "title",getResource().getMessage( str ) );
188                            set( "title",getResource().getLabel( str ) );
189                    }
190            }
191    
192            /**
193             * 【HTML】この要ç´?�«対して適用させるスタイルシーãƒ?style)を設定しますã?
194             *
195             * @og.tag
196             * タグにstyle属æ?を設定しますã?これは、キー:値; のセãƒ?ƒˆをè¤?•°記述できますã?
197             * 通常は、class属æ?ã‚??id属æ?で登録しておきã€?lg;style type="text/css"> で
198             * 外部からæŒ?®šする方がソースは読みã‚?�™くなりますã?
199             *
200             * @param   style スタイルシーãƒ?style="color:red; font-size:24pt;" など)
201             */
202            public void setStyle( final String style ) {
203                    set( "style",getRequestParameter( style ) );
204            }
205    
206            /**
207             * 【TAG】その部品に対して変更がå?来なã�?‚ˆã�?�«(readonly)æŒ?®šしまã�?サーバã?に送信されã‚?ã€?
208             *
209             * @og.tag
210             * INPUT/TEXTAREA 系に対して、指定可能ですã?
211             * readonly="readonly" , readonly="true" が指定された場合ã?、有効ですã?
212             * false も指定å?としては、有効ですã?(大æ–?­—小文字ã?区別も不è¦?
213             * それ以外ã?æŒ?®šã?、エラーとしますã?
214             *
215             * @og.rev 3.7.1.0 (2005/04/26) readonly,true,false が指定できるように変更ã€?
216             *
217             * @param   ronly 読み取り専用属æ?[readonly/true/false]
218             */
219            public void setReadonly( final String ronly ) {
220                    String readonly = nval( getRequestParameter( ronly ),null );
221                    if( readonly != null ) {
222                            if( readonly.equalsIgnoreCase( "readonly" ) ||
223                                    readonly.equalsIgnoreCase( "true"     ) ) {
224                                            set( "readonly","readonly" );
225                            }
226                            else if( ! readonly.equalsIgnoreCase( "false" ) ) {
227                                    String errMsg = "readonly には、[readonly,true,false]以外ã?æ–?­—ã?æŒ?®šできませんã€?
228                                                                    + " readonly=[" + readonly + "]" + HybsSystem.CR ;
229                                    throw new HybsSystemException( errMsg );
230                            }
231                    }
232            }
233    
234            /**
235             * 【TAG】その部品に対してã€?�¸択や変更がå?来なã�?‚ˆã�?�«(disabled)æŒ?®šしまã�?サーバã?に送信されなã�?ã€?
236             *
237             * @og.tag
238             * BUTTON/INPUT/OPTGROUP/OPTION/SELECT/TEXTAREA 系に対して、指定可能ですã?
239             * disabled="disabled" , disabled="true" が指定された場合ã?、有効ですã?
240             * false も指定å?としては、有効ですã?(大æ–?­—小文字ã?区別も不è¦?
241             * それ以外ã?æŒ?®šã?、エラーとしますã?
242             *
243             * @og.rev 3.7.1.0 (2005/04/26) disabled,true,false が指定できるように変更ã€?
244             *
245             * @param   dis 選択や変更がå?来なã�?‚ˆã�?�«するかどã�?�‹[disabled/true/false]
246             */
247            public void setDisabled( final String dis ) {
248                    String disabled = nval( getRequestParameter( dis ),null );
249                    if( disabled != null ) {
250                            if( disabled.equalsIgnoreCase( "disabled" ) ||
251                                    disabled.equalsIgnoreCase( "true"     ) ) {
252                                            set( "disabled","disabled" );
253                            }
254                            else if( ! disabled.equalsIgnoreCase( "false" ) ) {
255                                    String errMsg = "disabled には、[disabled/true/false]以外ã?æ–?­—ã?æŒ?®šできませんã€?
256                                                                    + " disabled=[" + disabled + "]" + HybsSystem.CR ;
257                                    throw new HybsSystemException( errMsg );
258                            }
259                    }
260            }
261    
262            /**
263             * 【HTML】タブã?移動é?(tabindex)を指定しまã�?0 ??32767)ã€?
264             *
265             * @og.tag
266             * Tabキーを押したときに要ç´?�Œ選択されるé ?•ªを指定しますã?
267             * 値にはã€?�¸択させたã�??番を数値で記述しますã?
268             *
269             * @param       tabindex        タブã?移動é?(0 ??32767)
270             */
271            public void setTabindex( final String tabindex ) {
272                    set( "tabindex",getRequestParameter( tabindex ) );
273            }
274    
275            /**
276             * 【HTML】アクセスキー(alt+キーで直接æŒ?®?を割り当てますã?
277             *
278             * @og.tag
279             * アクセスキーは、ã?ウスの使えなã�?’°å¢?�§もã?リンクにジャンプするã?ボタンを押すã?入力フォーãƒ?�«
280             * フォーカスを移すなどの操作を簡単に行うことができるようにè€??されたものですã?
281             * Windows の「ファイル(F)」メニューにつã�?�¦ã�?‚‹、F と同じような働きをしますã?
282             *
283             * @param   accesskey アクセスキー
284             */
285            public void setAccesskey( final String accesskey ) {
286                    set( "accesskey",getRequestParameter( accesskey ) );
287            }
288    
289            /**
290             * 【TAG】JavaScript などの HTML基本タグ以外ã?属æ?をã?そã?ままタグとして使用しますã?
291             *
292             * @og.tag
293             * JavaScript などの HTML基本タグ以外ã?属æ?をã?そã?まま
294             * タグとして使用しますã?<del>そã?ときにã€?')はã€?")に置き換えますã?</del>
295             *
296             * @og.rev 3.1.0.1 (2003/03/26) (')ã‚?")に置き換えå?ç�?�—てã�?�Ÿのを止めるã€?
297             *
298             * @param   optionAttributes HTML基本タグ以外ã?属æ?
299             */
300            public void setOptionAttributes( final String optionAttributes ) {
301                    String optAttri = getRequestParameter( optionAttributes );
302                    if( optAttri != null && optAttri.length() > 0 ) {
303                            set( "optionAttributes",optAttri );
304                    }
305            }
306    
307            /**
308             * 【HTML】JavaScriptのイベンãƒ?onClick を設定しまã�?ä¾?onClick="renew('query.jsp','QUERY');")ã€?
309             *
310             * @og.tag
311             * onClick をセãƒ?ƒˆしますã?
312             * 例えばã€?lt;og:column name="KBSAKU" onClick="renew('query.jsp','QUERY');" /&gt;
313             * のようにæŒ?®šすることで、ã?ルãƒ?‚¦ンメニューの絞込み検索が可能になりますã?
314             *
315             * @og.rev 3.5.0.0 (2003/09/17) 新規追åŠ?
316             * @og.rev 3.5.5.9 (2004/06/07) セパレータ付きの追åŠ?ƒ¡ソãƒ?ƒ‰に変更
317             *
318             * @param       onClick onClickイベンãƒ?ä¾?onClick="renew('query.jsp','QUERY');")
319             */
320            public void setOnClick( final String onClick ) {
321                    add( "onClick",getRequestParameter( onClick ),";" );
322            }
323    
324            /**
325             * 【HTML】JavaScriptのイベンãƒ?onChange を設定しまã�?ä¾?onChange="renew('query.jsp','QUERY');")ã€?
326             *
327             * @og.tag
328             * onChange をセãƒ?ƒˆしますã?
329             * 例えばã€?lt;og:column name="KBSAKU" onChange="renew('query.jsp','QUERY');" /&gt;
330             * のようにæŒ?®šすることで、ã?ルãƒ?‚¦ンメニューの絞込み検索が可能になりますã?
331             *
332             * @og.rev 3.5.0.0 (2003/09/17) 新規追åŠ?
333             * @og.rev 3.5.5.9 (2004/06/07) セパレータ付きの追åŠ?ƒ¡ソãƒ?ƒ‰に変更
334             *
335             * @param   onChange    onChangeイベンãƒ?ä¾?onChange="renew('query.jsp','QUERY');")
336             */
337            public void setOnChange( final String onChange ) {
338                    add( "onChange",getRequestParameter( onChange ),";" );
339            }
340    
341            /**
342             * 【HTML】JavaScriptのイベンãƒ?onBlur を設定しまã�?ä¾?onBlur="this.value=value.toUpperCase();")ã€?
343             *
344             * @og.tag
345             * onBlur は、フォーカスが離れたときに発生するイベントですã?
346             *
347             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
348             *
349             * @param   onBlur      onBlurイベンãƒ?ä¾?onBlur="this.value=value.toUpperCase();")
350             */
351            public void setOnBlur( final String onBlur ) {
352                    add( "onBlur",getRequestParameter( onBlur ),";" );
353            }
354    
355            /**
356             * 【HTML】JavaScriptのイベンãƒ?onFocus を設定しますã?
357             *
358             * @og.tag
359             * onFocus は、フォーカスされたときに発生するイベントですã?
360             *
361             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
362             *
363             * @param   onFocus     onFocusイベンãƒ?
364             */
365            public void setOnFocus( final String onFocus ) {
366                    add( "onFocus",getRequestParameter( onFocus ),";" );
367            }
368    
369            /**
370             * 【HTML】JavaScriptのイベンãƒ?onSelect を設定しますã?
371             *
372             * @og.tag
373             * onSelect は、テキストフィールãƒ?ãƒ?‚­ストエリアのãƒ?‚­ストが
374             * 選択されたときに発生するイベントですã?
375             *
376             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
377             *
378             * @param   onSelect    onSelectイベンãƒ?
379             */
380            public void setOnSelect( final String onSelect ) {
381                    add( "onSelect",getRequestParameter( onSelect ),";" );
382            }
383    
384            /**
385             * 【HTML】JavaScriptのイベンãƒ?ondblClick を設定しますã?
386             *
387             * @og.tag
388             * ondblClick は、ã?ウスでãƒ?ƒ–ルクリãƒ?‚¯されたときに発生するイベントですã?
389             *
390             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
391             *
392             * @param   ondblClick  ondblClickイベンãƒ?
393             */
394            public void setOndblClick( final String ondblClick ) {
395                    add( "ondblClick",getRequestParameter( ondblClick ),";" );
396            }
397    
398            /**
399             * 【HTML】JavaScriptのイベンãƒ?onMouseDown を設定しますã?
400             *
401             * @og.tag
402             * onMouseDown は、ã?ウスãƒ?‚¦ンされたときに発生するイベントですã?
403             *
404             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
405             *
406             * @param   onMouseDown onMouseDownイベンãƒ?
407             */
408            public void setOnMouseDown( final String onMouseDown ) {
409                    add( "onMouseDown",getRequestParameter( onMouseDown ),";" );
410            }
411    
412            /**
413             * 【HTML】JavaScriptのイベンãƒ?onMouseUp を設定しますã?
414             *
415             * @og.tag
416             * onMouseUp は、ã?ウスアãƒ??されたときに発生するイベントですã?
417             *
418             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
419             *
420             * @param   onMouseUp   onMouseUpイベンãƒ?
421             */
422            public void setOnMouseUp( final String onMouseUp ) {
423                    add( "onMouseUp",getRequestParameter( onMouseUp ),";" );
424            }
425    
426            /**
427             * 【HTML】JavaScriptのイベンãƒ?onMouseMove を設定しますã?
428             *
429             * @og.tag
430             * onMouseMove は、ã?ウスが移動されたときに発生するイベントですã?
431             *
432             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
433             *
434             * @param   onMouseMove onMouseMoveイベンãƒ?
435             */
436            public void setOnMouseMove( final String onMouseMove ) {
437                    add( "onMouseMove",getRequestParameter( onMouseMove ),";" );
438            }
439    
440            /**
441             * 【HTML】JavaScriptのイベンãƒ?onMouseOut を設定しますã?
442             *
443             * @og.tag
444             * onMouseOut は、ã?ウスが離れたときに発生するイベントですã?
445             *
446             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
447             *
448             * @param   onMouseOut  onMouseOutイベンãƒ?
449             */
450            public void setOnMouseOut( final String onMouseOut ) {
451                    add( "onMouseOut",getRequestParameter( onMouseOut ),";" );
452            }
453    
454            /**
455             * 【HTML】JavaScriptのイベンãƒ?onMouseOver を設定しますã?
456             *
457             * @og.tag
458             * onMouseOver は、ã?ウスが重なったときに発生するイベントですã?
459             *
460             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
461             *
462             * @param   onMouseOver onMouseOverイベンãƒ?
463             */
464            public void setOnMouseOver( final String onMouseOver ) {
465                    add( "onMouseOver",getRequestParameter( onMouseOver ),";" );
466            }
467    
468            /**
469             * 【HTML】JavaScriptのイベンãƒ?onKeydown を設定しますã?
470             *
471             * @og.tag
472             * onKeydown は、キーが押されたときに発生するイベントですã?
473             *
474             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
475             *
476             * @param   onKeydown   onKeydownイベンãƒ?
477             */
478            public void setOnKeydown( final String onKeydown ) {
479                    add( "onKeydown",getRequestParameter( onKeydown ),";" );
480            }
481    
482            /**
483             * 【HTML】JavaScriptのイベンãƒ?onKeypress を設定しますã?
484             *
485             * @og.tag
486             * onKeypress は、キーが押され続けてã�?�Ÿときに発生するイベントですã?
487             *
488             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
489             *
490             * @param   onKeypress  onKeypressイベンãƒ?
491             */
492            public void setOnKeypress( final String onKeypress ) {
493                    add( "onKeypress",getRequestParameter( onKeypress ),";" );
494            }
495    
496            /**
497             * 【HTML】JavaScriptのイベンãƒ?onKeyup を設定しますã?
498             *
499             * @og.tag
500             * onKeyup は、キーが押された状態から離されたときに発生するイベントですã?
501             *
502             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
503             *
504             * @param   onKeyup     onKeyupイベンãƒ?
505             */
506            public void setOnKeyup( final String onKeyup ) {
507                    add( "onKeyup",getRequestParameter( onKeyup ),";" );
508            }
509    
510            /**
511             * 【TAG】ロールをセãƒ?ƒˆしますã?
512             *
513             * @og.tag
514             * ここでæŒ?®šしたカラãƒ?ƒ­ールをå?に、ユーザー毎ã?アクセス許可がチェãƒ?‚¯されますã?
515             * アクセス許可されなã�?�¨、表示されませんã€?
516             * こã?ロールを指定しなã�??合ã?、カラãƒ?ƒªソースのロールが使用されますã?
517             *
518             * @og.rev 4.0.0.0 (2005/11/30) 新規追åŠ?
519             *
520             * @param       roles ロール
521             */
522            public void setRoles( final String roles ) {
523                    set( "roles",getRequestParameter( roles ) );
524            }
525    
526            /**
527             * 【TAG】å¿??入力を表す色に変えるかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
528             *
529             * @og.tag
530             * 初期値は、å¿??でなã�?"false") ですã?
531             *
532             * &lt;og:input name="PN" must="true" /&gt;
533             *
534             * @og.rev 5.2.1.0 (2010/10/01) 新規追åŠ?
535             *
536             * @param       flag    å¿??入力色に変えるかどã�?�‹[true:å¿??入åŠ?それ以å¤?å¿??でない]
537             */
538            public void setMust( final String flag ) {
539                    mustType = nval( getRequestParameter( flag ),null );
540                    if( "true".equalsIgnoreCase( mustType ) ) {
541                            mustType = "must";
542                            add( "class","must" );
543                    }
544            }
545    
546            /**
547             * 【TAG】選択å¿??入åŠ?どれかひとつå¿??)を表す色[true/mustAny/そã?他]を指定しまã�?初期値:無æŒ?®?ã€?
548             *
549             * @og.tag
550             * è¤?•°のカラãƒ??ã�?�¡、どれかひとつをå¿??とする選択å¿??入力を示す色を指定しますã?
551             * true またã?、mustAny を設定すると、class属æ?に、mustAny がセãƒ?ƒˆされますã?
552             * mustAny は、CSSファイルに初期設定されてã�?�¾すã?true またã?、mustAny 以外ã?値をセãƒ?ƒˆ
553             * すると、その値がそのまま、class属æ?にセãƒ?ƒˆされますã?でã€?�¸択å¿??のグループ化ã�?
554             * 可能ですã?
555             * なおã?実際の選択å¿??入力チェãƒ?‚¯は、ここではなくã?columnCheck タグでæŒ?®šがå¿?¦�ですã?
556             * 自動å?ç�??、mustAny="true" æŒ?®šã?場合ã?み有効ですã?
557             * 初期値は、無æŒ?®šですã?
558             *
559             * @og.rev 5.2.1.0 (2010/10/01) 新規追åŠ?
560             *
561             * @param       flag 選択å¿??入のæŒ?®š[true/mustAny/そã?他]
562             */
563            public void setMustAny( final String flag ) {
564                    if( mustType == null ) {        // must 属æ?と同時設定時には、must 属æ?を優先しますã?
565                            mustType = nval( getRequestParameter( flag ),null );
566                            if( "true".equalsIgnoreCase( mustType ) ) {
567                                    mustType = "mustAny";
568                            }
569                            add( "class",mustType );        // mustType == null の場合ã?、add されませんã€?
570                    }
571            }
572    
573            /**
574             * mustType 属æ?を取得しますã?
575             *
576             * must , mustAny 属æ?を設定するå?合に、mustType 属æ?を設定しますã?
577             * そã?設定された値を取りå?しますã?
578             * 何も設定されてã�?�ªã�?ж態では、null を返しますã?
579             *
580             * @og.rev 5.2.1.0 (2010/10/01) 新規追åŠ??
581             *
582             * @return      mustType属æ?
583             */
584            protected String getMustType() {
585                    return mustType ;
586            }
587    
588            /**
589             * must , mustAny 属æ?をè?動化するためのhiddenタグを生成しますã?
590             *
591             * HybsSystem.MUST_KEY + mustType をキーに、指定ã?カラãƒ?��をå?として
592             * hidden を作æ?しますã?こã?値ã‚?columnChack タグで拾って must 処ç�?�—ますã?
593             * なおã?must , mustAny 属æ?を使用してã�?�ªã�??合ã?、null を返しますã?
594             *
595             * @og.rev 5.2.1.0 (2010/10/01) 新規追åŠ??
596             *
597             * @param       name    mustæŒ?®šするカラãƒ?­‰ã?名称
598             *
599             * @return      自動化するためのhiddenタグ
600             */
601            protected String makeMustHidden( final String name ) {
602                    String rtn = null;
603                    if( mustType != null ) {
604                            rtn = XHTMLTag.hidden( HybsSystem.MUST_KEY + mustType, name );
605                    }
606                    return rtn;
607            }
608    }