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.fukurou.util.XHTMLTag;
020
021 import org.opengion.fukurou.util.StringUtil;
022
023 /**
024 * 【å?力ã?è¤?•°行ã?入力が可能なãƒ?‚ストå?力フィールドを作æ?するHTML拡張タグですã?
025 *
026 * name 属æ?に ラベルリソース のキーを与えることでã€?ロケールにあわせたリソースを使用してã€?
027 * 画面に表示しますã?
028 * ロケールは、ユーザーæƒ??の lang 属æ?をå?期å?で使用しã? セãƒ?ƒˆされてã�?�ªã�??合ã?ã€?
029 * リクエスト情報のロケールから取得しますã?
030 * ラベル部åˆ?�¨入力フィールド部åˆ?�Œãƒ??ブルタグの <td> により左右にåˆ?‰²されますã?
031 * HTML 表示時ã?、前後に<tr>タグで囲ってã€?整形できますã?
032 *
033 * @og.formSample
034 * ●形式ï¼?lt;og:queryOption >
035 * SELECTæ–?
036 * </og:queryOption >
037 * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
038 *
039 * ●Tag定義??
040 * <og:textarea
041 * name ○ã?HTML】名前をæŒ?®šしまã�?å¿??)ã€?
042 * lbl 【TAG】ラベルリソースのラベルIDを指定しまã�?
043 * rows 【HTML】高さ(行数)を指定しまã�?
044 * cols 【HTML】横å¹?カラãƒ?•°)を指定しまã�?
045 * must 【TAG】å¿??入力を表す色に変えるかどã�?�‹[true/false]を指定しまã�?初期値:false)
046 * mustAny 【TAG】選択å¿??入åŠ?どれかひとつå¿??)を表す色[true/mustAny/そã?他]を指定しまã�?初期値:無æŒ?®?
047 * aimai 【TAG】曖昧検索可能フィールドとして、曖昧検索方法をæŒ?®šしまã�?初期値:null)
048 * id 【HTML】要ç´?�«対して固有ã?名前(id)をつける場合に設定しまã�?
049 * lang 【HTML】要ç´??å†?®¹と他ã?属æ?値のè¨?ª?lang,xml:lang)を指定しまã�?
050 * dir 【HTML】文字表記ã?方å�?dir)を指定しまã�?
051 * title 【HTML】要ç´?�«対する補足çš?ƒ…報(title)を設定しまã�?
052 * style 【HTML】この要ç´?�«対して適用させるスタイルシーãƒ?style)を設定しまã�?
053 * readonly 【TAG】その部品に対して変更がå?来なã�?‚ˆã�?�«(readonly)æŒ?®šしまã�?サーバã?に送信されã‚?
054 * disabled 【TAG】その部品に対してã€?�¸択や変更がå?来なã�?‚ˆã�?�«(disabled)æŒ?®šしまã�?サーバã?に送信されなã�?
055 * tabindex 【HTML】タブã?移動é?(tabindex)を指定しまã�?0 ??32767)
056 * accesskey 【HTML】アクセスキー(alt+キーで直接æŒ?®?を割り当てまã�?
057 * clazz 【HTML】要ç´?�«対して class 属æ?を設定しまã�?
058 * language 【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
059 * onClick 【HTML】JavaScriptのイベンãƒ?onClick を設定しまã�?ä¾?onClick="renew('query.jsp','QUERY');")
060 * onBlur 【HTML】JavaScriptのイベンãƒ?onBlur を設定しまã�?ä¾?onBlur="this.value=value.toUpperCase();")
061 * onFocus 【HTML】JavaScriptのイベンãƒ?onFocus を設定しまã�?
062 * ondblClick 【HTML】JavaScriptのイベンãƒ?ondblClick を設定しまã�?
063 * onMouseDown 【HTML】JavaScriptのイベンãƒ?onMouseDown を設定しまã�?
064 * onMouseUp 【HTML】JavaScriptのイベンãƒ?onMouseUp を設定しまã�?
065 * onMouseMove 【HTML】JavaScriptのイベンãƒ?onMouseMove を設定しまã�?
066 * onMouseOut 【HTML】JavaScriptのイベンãƒ?onMouseOut を設定しまã�?
067 * onMouseOver 【HTML】JavaScriptのイベンãƒ?onMouseOver を設定しまã�?
068 * onSelect 【HTML】JavaScriptのイベンãƒ?onSelect を設定しまã�?
069 * onKeydown 【HTML】JavaScriptのイベンãƒ?onKeydown を設定しまã�?
070 * onKeypress 【HTML】JavaScriptのイベンãƒ?onKeypress を設定しまã�?
071 * onKeyup 【HTML】JavaScriptのイベンãƒ?onKeyup を設定しまã�?
072 * autofocus 【HTML5】指定したå?力æ¬?�«カーソルが当たって自動的にフォーカスされますã?
073 * placeholder 【HTML5】å?力æ¬?�«初期表示するå†?®¹を指定しますã?
074 * required 【HTML5】å?力å¿??を指定しまã�?
075 * roles 【TAG】ロールをセãƒ?ƒˆしまã�?
076 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
077 * > ... Body ...
078 * </og:textarea>
079 *
080 * ●使用ä¾?
081 * <og:textarea name="BUN" />
082 *
083 * <og:textarea name="BUN"> 初期値に値をセãƒ?ƒˆしたã�?�¨ã�?
084 * test
085 * </og:textarea name="BUN">
086 *
087 * @og.group 画面部å“?
088 *
089 * @version 4.0
090 * @author Kazuhiko Hasegawa
091 * @since JDK5.0,
092 */
093 public class TextareaTag extends HTMLTagSupport {
094 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
095 private static final String VERSION = "5.2.1.0 (2010/10/01)" ;
096
097 private static final long serialVersionUID = 521020101001L ;
098
099 /**
100 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
101 *
102 * @return 後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
103 */
104 @Override
105 public int doStartTag() {
106 return( EVAL_BODY_BUFFERED ); // Body を評価するã€? extends BodyTagSupport æ™?
107 }
108
109 /**
110 * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
111 *
112 * @og.rev 3.1.1.0 (2003/03/28) ボディのå†?®¹を取得するå?ç�?‚’、CommonTagSupport で行うã€?
113 * @og.rev 3.1.1.0 (2003/03/28) body 属æ?にã€?{@XXXX} パã?ス機è?を付加するã€?
114 *
115 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
116 */
117 @Override
118 public int doAfterBody() {
119 String str = getBodyString();
120
121 if( str != null && str.length() > 0 ) {
122 String label = StringUtil.htmlFilter( str );
123 if( label != null && label.length() > 0 ) {
124 set( "body",label );
125 }
126 }
127
128 return(SKIP_BODY);
129 }
130
131 /**
132 * 検索条件の入力用のãƒ?‚ストフィールドを作æ?しますã?
133 *
134 * ãƒ??ブルタグによりフィールドã?åˆ?‰²されますã?
135 * 使用時ã?、テーブルタグを前後に使用して下さã�??
136 *
137 * @og.rev 4.3.7.1 (2009/06/08) id=labelのclassåŒ?
138 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属æ?をè?動化しますã?
139 * @og.rev 5.8.4.1 (2015/02/20) aimai対å¿?6.2.0.0é€?§»æ¤?
140 *
141 * @return 入力用のãƒ?‚ストフィールドタグ
142 */
143 @Override
144 protected String makeTag() {
145 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
146 if( getMsglbl() == null ) { setLbl( get( "name" ) ); }
147
148 // 4.3.7.1 (2009/06/08) id=labelのclassåŒ?
149 // rtn.append( "<td id=\"label\">" );
150 rtn.append( "<td class=\"label\">" );
151 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
152 rtn.append( "</td>" );
153 rtn.append( "<td>" );
154 rtn.append( XHTMLTag.textarea( getAttributes() ) );
155 rtn.append( "</td>" );
156
157 rtn.append( makeAimaiPicker( get( "name" ) ) );
158 // 5.2.1.0 (2010/10/01) must , mustAny 属æ?をè?動化しますã?
159 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); }
160
161 return rtn.toString() ;
162 }
163
164 /**
165 * 【HTML】名前をæŒ?®šしますã?
166 *
167 * @og.tag 名前を指定しますã?
168 *
169 * @param name 名前
170 */
171 public void setName( final String name ) {
172 set( "name",getRequestParameter( name ) );
173 }
174
175 /**
176 * 【HTML】高さ(行数)を指定しますã?
177 *
178 * @og.tag 高さ(行数)を指定しますã?
179 *
180 * @param rows 高さ(行数)
181 */
182 public void setRows( final String rows ) {
183 set( "rows",getRequestParameter( rows ) );
184 }
185
186 /**
187 * 【HTML】横å¹?カラãƒ?•°)を指定しますã?
188 *
189 * @og.tag 横å¹?‚’æŒ?®šしますã?
190 *
191 * @param cols 横å¹?カラãƒ?•°)
192 */
193 public void setCols( final String cols ) {
194 set( "cols",getRequestParameter( cols ) );
195 }
196 }