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 import org.opengion.fukurou.util.XHTMLTag;
021
022 import static org.opengion.fukurou.util.StringUtil.nval ;
023
024 /**
025 * 入力フィールドやボタンなどを作æ?するHTML拡張タグですã?
026 *
027 * 簡易的な入力用タグとして、columnタグがありますã?でã€??常は、columnタグをお使ã�?¸‹さã�??
028 * name 属æ?に ラベルリソース のキーを与えることで、ロケールにあわせたリソースã‚?
029 * 使用して、画面に表示しますã?
030 * ロケールは、session 登録é ?›®の HybsSystem#LANG_KEY をå?期å?で使用しã?
031 * language 属æ?で定義されてã�?‚‹場合ã?、そちらを優先しますã?
032 *
033 * @og.formSample
034 * ●形式ï¼?lt;og:input name=… value=… />
035 * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
036 *
037 * ●Tag定義??
038 * <og:input
039 * type 【HTML】表示形式[text/password/checkbox/radio/submit/reset/button/image/file]を指定しまã�?初期値:text)
040 * HTML5追åŠ??[search/tel/url/email/datetime/date/month/week/time/datetime-local/number/range/color]
041 * name 【HTML】名前をæŒ?®šしまã�?
042 * value 【HTML】このフィールドに設定するå?を指定しまã�?
043 * caseKey 【TAG】このタグ自体を利用するかどã�?�‹の条件キーを指定しまã�?初期値:null)
044 * caseVal 【TAG】このタグ自体を利用するかどã�?�‹の条件値を指定しまã�?初期値:null)
045 * caseNN 【TAG】指定ã?値がã?null/ゼロæ–?—å? でなã�??å�?Not Null=NN)は、このタグは使用されまã�?初期値:true)
046 * caseNull 【TAG】指定ã?値がã?null/ゼロæ–?—å? の場合ã?、このタグは使用されまã�?初期値:true)
047 * lbl 【TAG】ラベルリソースのラベルIDを指定しまã�?
048 * lbls 【TAG】ラベルをCSV形式でè¤?•°æŒ?®šしまã�?
049 * td 【TAG】テーブル形式ã? <td> タグを使用するかどã�?�‹[yes/no/false]を指定しまã�?初期値:yes)
050 * colspan 【TAG】フィールド部åˆ?? colspan を指定しまã�?
051 * nextForm 【TAG】å?力カーソルを指定されたname属æ?のフィールドへ自動的に移動しまã�?
052 * optionAttributes 【TAG】JavaScript などの HTML基本タグ以外ã?属æ?をã?そã?ままタグとして使用しまã�?
053 * must 【TAG】å¿??入力を表す色に変えるかどã�?�‹[true/false]を指定しまã�?初期値:false)
054 * mustAny 【TAG】選択å¿??入åŠ?どれかひとつå¿??)を表す色[true/mustAny/そã?他]を指定しまã�?初期値:無æŒ?®?
055 * aimai 【TAG】曖昧検索可能フィールドとして、曖昧検索方法をæŒ?®šしまã�?初期値:null)
056 * size 【HTML】横å¹?‚’æŒ?®šしまã�?typeがtextまたã?passwordの場合ã?æ–?—数で、それ以外ã?ピクセル)
057 * maxlength 【HTML】最大入力文字数を指定しまã�?typeがtextまたã?passwordの場å�?
058 * checked 【HTML】type ã�?checkbox ã�?radio のときã?初めから選択された状態で表示しまã�?"checked"のみæŒ?®š可)
059 * src 【HTML】type ã�?image の場合ã?送信ボタンとして利用する画像ã?URLをセãƒ?ƒˆしまã�?
060 * alt 【HTML】type ã�?image の場合で、画像が表示できなã�??合ã?代替ãƒ?‚ストをセãƒ?ƒˆしまã�?
061 * accept 【HTML】type ã�?file の場合に、MIMEタイプをCSV形式でè¤?•°æŒ?®šå?来まã�?
062 * usemap 【HTML】type ã�?image の場合ã?クライアントサイドã?イメージマップã?URLを指定しまã�?
063 * ismap 【HTML】type ã�?image の場合に、サーバã?サイドã?イメージマップを使用する場合にæŒ?®šしまã�?
064 * id 【HTML】要ç´?�«対して固有ã?名前(id)をつける場合に設定しまã�?
065 * lang 【HTML】要ç´??å†?®¹と他ã?属æ?値のè¨?ª?lang,xml:lang)を指定しまã�?
066 * dir 【HTML】文字表記ã?方å�?dir)を指定しまã�?
067 * title 【HTML】要ç´?�«対する補足çš?ƒ…報(title)を設定しまã�?
068 * style 【HTML】この要ç´?�«対して適用させるスタイルシーãƒ?style)を設定しまã�?
069 * readonly 【TAG】その部品に対して変更がå?来なã�?‚ˆã�?�«(readonly)æŒ?®šしまã�?サーバã?に送信されã‚?
070 * disabled 【TAG】その部品に対してã€?�¸択や変更がå?来なã�?‚ˆã�?�«(disabled)æŒ?®šしまã�?サーバã?に送信されなã�?
071 * tabindex 【HTML】タブã?移動é?(tabindex)を指定しまã�?0 ??32767)
072 * accesskey 【HTML】アクセスキー(alt+キーで直接æŒ?®?を割り当てまã�?
073 * clazz 【HTML】要ç´?�«対して class 属æ?を設定しまã�?
074 * language 【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
075 * onClick 【HTML】JavaScriptのイベンãƒ?onClick を設定しまã�?ä¾?onClick="renew('query.jsp','QUERY');")
076 * onChange 【HTML】JavaScriptのイベンãƒ?onChange を設定しまã�?ä¾?onChange="renew('query.jsp','QUERY');")
077 * onBlur 【HTML】JavaScriptのイベンãƒ?onBlur を設定しまã�?ä¾?onBlur="this.value=value.toUpperCase();")
078 * onFocus 【HTML】JavaScriptのイベンãƒ?onFocus を設定しまã�?
079 * ondblClick 【HTML】JavaScriptのイベンãƒ?ondblClick を設定しまã�?
080 * onMouseDown 【HTML】JavaScriptのイベンãƒ?onMouseDown を設定しまã�?
081 * onMouseUp 【HTML】JavaScriptのイベンãƒ?onMouseUp を設定しまã�?
082 * onMouseMove 【HTML】JavaScriptのイベンãƒ?onMouseMove を設定しまã�?
083 * onMouseOut 【HTML】JavaScriptのイベンãƒ?onMouseOut を設定しまã�?
084 * onMouseOver 【HTML】JavaScriptのイベンãƒ?onMouseOver を設定しまã�?
085 * onSelect 【HTML】JavaScriptのイベンãƒ?onSelect を設定しまã�?
086 * onKeydown 【HTML】JavaScriptのイベンãƒ?onKeydown を設定しまã�?
087 * onKeypress 【HTML】JavaScriptのイベンãƒ?onKeypress を設定しまã�?
088 * onKeyup 【HTML】JavaScriptのイベンãƒ?onKeyup を設定しまã�?
089 * autocomplete 【HTML5】å?力å?補を提示して入力å?容をè?動補完する[on/off]?ˆå?期å?はon?‰ã?
090 * autofocus 【HTML5】指定したå?力æ¬?�«カーソルが当たって自動的にフォーカスされますã?
091 * pattern 【HTML5】正規表現で入力å?のパターンを指定しますã?
092 * placeholder 【HTML5】å?力æ¬?�«初期表示するå†?®¹を指定しますã?
093 * required 【HTML5】å?力å¿??を指定しまã�?
094 * list 【HTML5】ユーザーに入力å?補として提案するデータリストã?要ç´??id属æ?の値を指定しますã?
095 * min 【HTML5】å?力æ¬?�§入力できるæœ?°�å?を指定しますã?
096 * max 【HTML5】å?力æ¬?�§入力できるæœ?¤§値を指定しますã?
097 * step 【HTML5】å?力æ¬?�§刻ã‚?‚¹ãƒ?ƒƒプå?を指定するã?
098 * roles 【TAG】ロールをセãƒ?ƒˆしまã�?
099 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
100 * > ... Body ...
101 * </og:input>
102 *
103 * ●使用ä¾?
104 * <og:input name="OYA" /> lbl属æ?が指定されてã�?�ªã�??合ã?、name属æ?をキーにしてLabelResourceを読み取りますã?
105 * <og:input name="PN" lbl="KO" /> lbl属æ?を指定することで、ラベルã�?�‘を付替えることができますã?
106 * <og:input name="PN" size="13" maxlength="11" /> 強制çš?�«サイズの変更をするときã?、size属æ?、maxlength属æ?を使用できますã?
107 * <og:input name="OYA" td="false" /> 自動作æ?されるtdタグã‚?ƒ©ベルを外すときã?td属æ?を使ã�?�¾すã?
108 * <og:input name="OYA" td="no" /> 自動作æ?されるtdタグを外し、ラベルとフィールドã?残しますã?
109 * <og:input name="PN" optionAttributes="onBlur='blr()'
110 * onFocus='fcs()'" />
111 * JavaScriptのイベントをコーãƒ?‚£ングするときã?、optionAttributes属æ?を使ã�?�¾すã?
112 * <og:input type="radio" name="OYA" /> ラベル部åˆ?�¨入力フィールド部åˆ?�Œãƒ??ブルタグの<td>により左右にåˆ?‰²されますã?
113 *
114 * <table>
115 * <tr><og:input name="PN" value="{@PN}" /></tr>
116 * <tr><og:input name="CD" value="{@CD}" /></tr>
117 * </table>
118 *
119 * <table>
120 * <tr><og:input name="PN" value="{@PN}" >部品å?力フィールãƒ?lt;/og:input></tr>
121 * <tr><og:input name="CD" value="{@CD}" >コードフィールãƒ?lt;/og:input></tr>
122 * </table>
123 * HTML 表示時ã?、前後に<tr>タグで囲って,整形できますã?
124 *
125 * <og:input name="A" nextForm="B" /> æœ?¤§桁数入力後ã?フォーãƒ?B にフォーカスが移動しますã?
126 * <og:input name="B" />
127 *
128 * BODY 部åˆ?�«記述した値は、å?力フィールドã?直後にセãƒ?ƒˆされますã?
129 * <og:input name="PN" >
130 * <button type="button" onclick="popup(?¥?¥?¥);return false;">
131 * <og:message lbl="POPUP" comment="▼" />
132 * </button>
133 * </og:input>
134 *
135 * @og.group 画面部å“?
136 *
137 * @version 4.0
138 * @author Kazuhiko Hasegawa
139 * @since JDK5.0,
140 */
141 public class InputTag extends HTMLTagSupport {
142 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
143 private static final String VERSION = "5.7.1.0 (2013/12/06)" ;
144
145 private static final long serialVersionUID = 571020131206L ;
146
147 // 5.7.1.0 (2013/12/06) HTML5 で新たに追åŠ?�•れた、type を追åŠ?
148 // private static final String CHECK_TYPE = "|text|password|checkbox|radio|submit|reset|button|image|file|hidden|" ;
149 private static final String CHECK_TYPE = "|text|password|checkbox|radio|submit|reset|button|image|file|hidden|"
150 + "search|tel|url|email|datetime|date|month|week|time|datetime-local|number|range|color|" ;
151
152 // 4.0.0 (2005/01/31) HTML_LABEL_SEPARATOR ã‚?boolean 変数として取得しますã?
153 private final String CLM = ( HybsSystem.sysBool( "HTML_LABEL_SEPARATOR" ) ) ? ":" : "" ;
154
155 private String td_flag = "yes"; // yes:<td> タグを使用 / false:フィールドã?み / no:ラベルとフィールãƒ?
156 // 3.0.1.4 (2003/03/17) colspan 属æ?を追åŠ??
157 private String colspan = "";
158 // 3.5.4.2 (2003/12/15) nextForm 属æ?を追åŠ??
159 private String nextForm = null;
160
161 // 4.0.0 (2005/01/31) COLUMNS_MAXSIZE を定義しておきますã?
162 private final int COLUMNS_MAXSIZE = HybsSystem.sysInt( "HTML_COLUMNS_MAXSIZE" ) ; // 表示フィールドã?大きさ
163
164 // 4.0.0 (2007/05/30) BODY 部åˆ?�«記述した値は、å?力フィールドã?直後にセãƒ?ƒˆされますã?
165 private String body = null;
166
167 /**
168 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
169 *
170 * @og.rev 4.0.0.0 (2007/05/30) 新規追åŠ?BODY部の評価)
171 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
172 *
173 * @return 後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
174 */
175 @Override
176 public int doStartTag() {
177 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
178 if( useTag() ) {
179 return( EVAL_BODY_BUFFERED ); // Body を評価するã€? extends BodyTagSupport æ™?
180 }
181 return ( SKIP_BODY ); // Body を評価しなã�?
182 }
183
184 /**
185 * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
186 *
187 * @og.rev 4.0.0.0 (2007/05/30) 新規追åŠ?BODY部の評価)
188 *
189 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
190 */
191 @Override
192 public int doAfterBody() {
193 body = getBodyString();
194 return(SKIP_BODY);
195 }
196
197 /**
198 * タグリブオブジェクトをリリースしますã?
199 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
200 *
201 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
202 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false でæŒ?®šするよã�?�«変更
203 * @og.rev 3.0.1.4 (2003/03/17) colspan 属æ?を追åŠ??
204 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
205 * @og.rev 3.5.4.2 (2003/12/15) nextForm 属æ?を追åŠ??
206 * @og.rev 5.8.7.1 (2015/05/22) body追åŠ?6.2.4.0対å¿?
207 */
208 @Override
209 protected void release2() {
210 super.release2();
211 td_flag = "yes"; // table形式ã? <td> タグを使用するかどã�?�‹
212 colspan = "";
213 nextForm = null; // 3.5.4.2 (2003/12/15)
214 body = null; // 5.8.7.1 (2015/05/22)
215 }
216
217 /**
218 * 検索条件の入力用のãƒ?‚ストフィールドを作æ?しますã?
219 *
220 * ãƒ??ブルタグによりフィールドã?åˆ?‰²されますã?
221 * 使用時ã?、テーブルタグを前後に使用して下さã�??
222 *
223 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false でæŒ?®šするよã�?�«変更
224 * @og.rev 2.0.1.0 (2002/10/10) ラベルとフィールドã?セパレーターとして、コロン(??を使用するかどã�?�‹を指定できる
225 * @og.rev 3.0.1.2 (2003/03/07) forward.jsp の代替用 CommonForwardTag を新規作æ?
226 * @og.rev 3.1.0.1 (2003/03/26) キャãƒ?‚·ュエントリーは、type="submit" の場合ã?み、登録するã€?
227 * @og.rev 3.1.1.0 (2003/03/28) forward.jsp 関係ã?処ç�?‚’削除するã€?
228 * @og.rev 3.1.1.0 (2003/03/28) radio ボタン等で、ラベルをクリãƒ?‚¯してもå?をセãƒ?ƒˆできるようにするã€?
229 * @og.rev 3.5.4.2 (2003/12/15) 入力カーソルをè?動的に次のフィールドへ移動する機è?を追åŠ?�™るã?
230 * @og.rev 4.0.0.0 (2007/05/30) BODY 部åˆ?�«記述した値は、å?力フィールドã?直後にセãƒ?ƒˆされますã?
231 * @og.rev 4.3.7.1 (2009/06/08) id=labelのclassåŒ?
232 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属æ?をè?動化しますã?
233 * @og.rev 5.6.2.2 (2013/03/15) 自動must処ç�??出力位置を変更
234 * @og.rev 5.8.4.1 (2015/02/10) aimai対å¿?6.2.0.0é€?§»æ¤?
235 *
236 * @return 入力用のãƒ?‚ストフィールドタグ
237 */
238 @Override
239 protected String makeTag() {
240 if( get( "value" ) == null ) { set( "value","" ); }
241 if( getMsglbl() == null ) { setLbl( get( "name" ) ); }
242
243 // 3.5.4.2 (2003/12/15) 入力カーソルをè?動的に次のフィールドへ移動する機è?
244 if( nextForm != null ) {
245 String onKeyup = "nextForm(this,'" + nextForm + "'," + get( "maxlength" ) + ");" ;
246 set( "onKeyup",onKeyup );
247 }
248
249 String type = get( "type" );
250 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
251 // もう少しましな、別の方法をè€?�ˆるå¿?¦�がありますã?
252 if( "yes".equals( td_flag ) ) {
253 if( type != null && ( "radio".equals( type ) || "checkbox".equals( type ) )) {
254 if( get( "id" ) == null ) { set( "id",TaglibUtil.getTagId() ); }
255
256 rtn.append( "<td>" );
257 rtn.append( XHTMLTag.input( getAttributes() ) );
258 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
259 rtn.append( "</td>" );
260 rtn.append( "<td " );
261 rtn.append( colspan );
262 rtn.append( ">" );
263 rtn.append( "<label for=\"" );
264 rtn.append( get( "id" ) );
265 rtn.append( "\">" );
266 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
267 rtn.append( "</label>" );
268 // rtn.append( "</td>" );
269 }
270 else if( type != null && ( "submit".equals( type ) || "reset".equals( type ) || "button".equals( type ) ) ) {
271 set( "value",getMsglbl() );
272 rtn.append( "<td" );
273 rtn.append( colspan );
274 rtn.append( ">" );
275 rtn.append( XHTMLTag.input( getAttributes() ) );
276 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
277 rtn.append( "</td>" );
278 // rtn.append( "<td></td>" );
279 rtn.append( "<td>" );
280 }
281 else {
282 // 4.3.7.1 (2009/06/08) id=labelのclassåŒ?
283 // rtn.append( "<td id=\"label\">" );
284 rtn.append( "<td class=\"label\">" );
285 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
286 rtn.append( CLM );
287 rtn.append( "</td>" );
288 rtn.append( "<td" );
289 rtn.append( colspan );
290 rtn.append( ">" );
291 rtn.append( XHTMLTag.input( getAttributes() ) );
292 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
293 // rtn.append( "</td>" );
294 }
295 rtn.append( makeAimaiPicker( get("name") ) ); // 5.8.4.2(2015/02/20)
296 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); } // 5.6.2.2 (2013/03/15)
297 rtn.append( "</td>" );
298 }
299 else if( "no".equals( td_flag ) ) {
300 if( type != null && ( "radio".equals( type ) || "checkbox".equals( type ) )) {
301 rtn.append( "<label>" );
302 rtn.append( XHTMLTag.input( getAttributes() ) );
303 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
304 // 4.3.7.1 (2009/06/08) id=labelのclassåŒ?
305 // rtn.append( "<span id=\"label\">" );
306 rtn.append( "<span class=\"label\">" );
307 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
308 rtn.append( "</span>" );
309 rtn.append( "</label>" );
310 }
311 else if( type != null && ( "submit".equals( type ) || "reset".equals( type ) || "button".equals( type ) ) ) {
312 set( "value",getMsglbl() );
313 rtn.append( XHTMLTag.input( getAttributes() ) );
314 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
315 }
316 else {
317 // 4.3.7.1 (2009/06/08) id=labelのclassåŒ?
318 // rtn.append( "<span id=\"label\">" );
319 rtn.append( "<span class=\"label\">" );
320 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31)
321 rtn.append( CLM );
322 rtn.append( "</span>" );
323 rtn.append( XHTMLTag.input( getAttributes() ) );
324 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
325 }
326 rtn.append( makeAimaiPicker( get("name") ) ); // 5.8.4.2(2015/02/20)
327 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); } // 5.6.2.2 (2013/03/15)
328 }
329 else {
330 if( type != null && ( "submit".equals( type ) || "reset".equals( type ) || "button".equals( type ) ) ) {
331 set( "value",getMsglbl() );
332 rtn.append( XHTMLTag.input( getAttributes() ) );
333 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
334 }
335 else {
336 rtn.append( XHTMLTag.input( getAttributes() ) );
337 if( body != null ) { rtn.append( body ); } // 4.0.0 (2007/05/30) BODY部の評価
338 }
339 rtn.append( makeAimaiPicker( get("name") ) ); // 5.8.4.2(2015/02/20)
340 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); } // 5.6.2.2 (2013/03/15)
341 }
342
343 // 5.2.1.0 (2010/10/01) must , mustAny 属æ?をè?動化しますã?
344 // 5.6.2.2 (2013/03/15) tdの外に出力される不正形を正しまã�?
345 // if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); }
346
347 return rtn.toString() ;
348 }
349
350 /**
351 * 【HTML】名前をæŒ?®šしますã?
352 *
353 * @og.tag
354 * <og:input name="PN" />
355 *
356 * @param name 名前
357 */
358 public void setName( final String name ) {
359 set( "name",getRequestParameter( name ) );
360 }
361
362 /**
363 * 【HTML】表示形式をæŒ?®šしまã�?初期値:text)ã€?
364 *
365 * @og.tag
366 * 通常は、表示形式[text/password/checkbox/radio/submit/reset/button/image/file]を指定しますã?
367 * HTML5 で追åŠ?�•れた形式[search/tel/url/email/datetime/date/month/week/time/datetime-local/number/range/color]
368 * もã?設定できますã?
369 *
370 * HTML5 の機è?を有効にするには、ネイãƒ?‚£ブモードで動作させるå¿?¦�がありますã?
371 * â‘?USE_IE7_HEADER = "false" に設定するã?
372 * ② USE_HTML5_HEADER = "true" に設定するã?
373 * ③ IEのãƒ??ル⇒互換表示設定で、互換表示に追åŠ?�—たWebサイトから削除するã€?
374 * ④ 同上ã?設定で、イントラサイトを互換表示で表示するのチェãƒ?‚¯を外すã€?
375 * å¿?¦�がありますã?
376 *
377 * <og:input type="text" /> ãƒ?‚ストã?ãƒ?‚¯スを表示
378 * <og:input type="password" /> パスワード専用ãƒ?‚ストã?ãƒ?‚¯スを表示
379 * <og:input type="checkbox" /> チェãƒ?‚¯ボックスを表示
380 * <og:input type="radio" /> ラジオボタンを表示
381 * <og:input type="submit" /> 送信実行ã?タンを表示
382 * <og:input type="reset" /> 入力したフィールドå?容をå?てリセãƒ?ƒˆ
383 * <og:input type="button" /> ボタンを表示
384 * <og:input type="image" /> イメージを表示してクリãƒ?‚¯した座標を返す
385 * <og:input type="file" /> ファイル名å?力ã?ãƒ?‚¯スを表示
386 * <og:input type="hidden" /> 表示させずにサーバã?に送信するãƒ??タ
387 *
388 * HTML5 で追åŠ?�•れたタイãƒ?
389 * <og:input type="search" /> 検索ãƒ?‚ストã?入力æ¬?‚’作æ?する
390 * <og:input type="tel" /> 電話番号の入力æ¬?‚’作æ?する
391 * <og:input type="url" /> URLの入力æ¬?‚’作æ?する
392 * <og:input type="email" /> メールアドレスの入力æ¬?‚’作æ?する
393 * <og:input type="datetime" /> UTC?ˆ協定世界時)による日時ã?入力æ¬?‚’作æ?する
394 * <og:input type="date" /> 日付ã?入力æ¬?‚’作æ?する
395 * <og:input type="month" /> 月ã?入力æ¬?‚’作æ?する
396 * <og:input type="week" /> 週の入力æ¬?‚’作æ?する
397 * <og:input type="time" /> 時間の入力æ¬?‚’作æ?する
398 * <og:input type="datetime-local" /> UTC?ˆ協定世界時)によらなã�?ƒーカル日時ã?入力æ¬?‚’作æ?する
399 * <og:input type="number" /> 数値の入力æ¬?‚’作æ?する
400 * <og:input type="range" /> レンジの入力æ¬?‚’作æ?する
401 * <og:input type="color" /> 色の入力æ¬?‚’作æ?する
402 *
403 * @og.rev 5.7.1.0 (2013/12/06) HTML5 対å¿?
404 *
405 * @param type 表示形式[text/password/checkbox/radio/submit/reset/button/image/file]、HTML5用 [search/tel/url/email/datetime/date/month/week/time/datetime-local/number/range/color]
406 */
407 public void setType( final String type ) {
408 String tp = getRequestParameter( type );
409
410 if( check( "|" + tp + "|" , CHECK_TYPE ) ) {
411 set( "type",tp );
412 }
413 else {
414 String errMsg = "type 属æ?は、下記ã?中から選択してください。type=["
415 + tp + " in [" + CHECK_TYPE + "]";
416 throw new HybsSystemException( errMsg );
417 }
418 }
419
420 /**
421 * 【HTML】このフィールドに設定するå?を指定しますã?
422 *
423 * @og.tag
424 * type属æ?の値ã�?radio"ã�?checkbox"以外ã?場合ã?こã?属æ?は省略可能ですã?
425 *<og:input name="PN" value="syokichi" />
426 *
427 * @param value 初期値
428 */
429 public void setValue( final String value ) {
430 set( "value",getRequestParameter( value ) );
431 }
432
433 /**
434 * 【HTML】横å¹?‚’æŒ?®šしまã�?typeがtextまたã?passwordの場合ã?æ–?—数で、それ以外ã?ピクセル)ã€?
435 *
436 * @og.tag
437 * <og:input name="PN" size="20" />
438 *
439 * @param size 横å¹?
440 */
441 public void setSize( final String size ) {
442 set( "size",getRequestParameter( size ) );
443 }
444
445 /**
446 * 【HTML】最大入力文字数を指定しまã�?typeがtextまたã?passwordの場å�?ã€?
447 *
448 * @og.tag
449 * æœ?¤§æ–?—数はsizeæŒ?®šをè¶?�ˆ得るがã?è¶?�ˆたå?合ユーザエージェントã?スクロール機構を提供するå¿?¦�がありますã?
450 *こã?属æ?の初期値は「無制限ã?ですã?
451 *<og:input name="PN" maxlength="20" />
452 *
453 * @og.rev 3.5.4.2 (2003/12/15) æœ?¤§入力制限数に応じたサイズ自動生成を入れますã?
454 * @og.rev 3.5.4.5 (2004/01/23) CSSで処ç�?�™るå?合ã?クラス属æ?は、maxlength ã�???以下ã?場合とするã€?
455 * @og.rev 4.0.0.0 (2005/01/31) getFieldSize メソãƒ?ƒ‰ã‚?XHTMLTag から DBColumn へ移å‹?
456 *
457 * @param maxlength æœ?¤§入力文字数
458 */
459 public void setMaxlength( final String maxlength ) {
460 String mlen = nval( getRequestParameter( maxlength ),null ) ;
461 set( "maxlength",mlen );
462 if( get( "size" ) == null && mlen != null ) {
463 // 4.0.0 (2005/01/31) getFieldSize メソãƒ?ƒ‰ã‚?XHTMLTag から DBColumn へ移å‹?
464 int size = Integer.parseInt( mlen );
465 if( size > COLUMNS_MAXSIZE ) { size = COLUMNS_MAXSIZE; }
466 set( "size",String.valueOf( size ) );
467 }
468
469 // 3.5.4.5 (2004/01/23) 追åŠ?
470 if( mlen != null && mlen.length() == 1 ) {
471 char ch = mlen.charAt(0);
472 if( ch >= '1' && ch <= '5' ) {
473 add( "class", "S0" + ch ); // 3.5.5.9 (2004/06/07) セパレータ引数付きのメソãƒ?ƒ‰に変更
474 }
475 }
476 }
477
478 /**
479 * 【HTML】type ã�?checkbox ã�?radio のときã?初めから選択された状態で表示しまã�?"checked"のみæŒ?®š可)ã€?
480 *
481 * @og.tag
482 *
483 * <og:input name="PN" type="checkbox" checked="checked" />
484 *
485 * @param ch 選択された状態にするかどã�?�‹[checked:選択状æ…?そã?ã�?なにもしない]
486 */
487 public void setChecked( final String ch ) {
488 String checked = getRequestParameter( ch );
489 if( "checked".equals( checked )) {
490 set( "checked","checked" );
491 }
492 }
493
494 /**
495 * 【HTML】type ã�?image の場合ã?送信ボタンとして利用する画像ã?URLをセãƒ?ƒˆしますã?
496 *
497 * @og.tag src セãƒ?ƒˆ
498 *
499 * @param src 画像ã?URL
500 */
501 public void setSrc( final String src ) {
502 set( "src",getRequestParameter( src ) );
503 }
504
505 /**
506 * 【HTML】type ã�?image の場合で、画像が表示できなã�??合ã?代替ãƒ?‚ストをセãƒ?ƒˆしますã?
507 *
508 * @og.tag alt セãƒ?ƒˆ
509 *
510 * @param alt 代替ãƒ?‚スãƒ?
511 */
512 public void setAlt( final String alt ) {
513 set( "alt",getRequestParameter( alt ) );
514 }
515
516 /**
517 * 【HTML】type ã�?file の場合に、MIMEタイプをCSV形式でè¤?•°æŒ?®šå?来ますã?
518 *
519 * @og.tag accept セãƒ?ƒˆ
520 *
521 * @param accept MIMEタイãƒ?CSV形å¼?
522 */
523 public void setAccept( final String accept ) {
524 set( "accept",getRequestParameter( accept ) );
525 }
526
527 /**
528 * 【HTML】type ã�?image の場合ã?クライアントサイドã?イメージマップã?URLを指定しますã?
529 *
530 * @og.tag usemap セãƒ?ƒˆ
531 *
532 * @param usemap クライアントサイドã?イメージマップã?URL
533 */
534 public void setUsemap( final String usemap ) {
535 set( "usemap",getRequestParameter( usemap ) );
536 }
537
538 /**
539 * 【HTML】type ã�?image の場合に、サーバã?サイドã?イメージマップを使用する場合にæŒ?®šしますã?
540 *
541 * @og.tag ismap セãƒ?ƒˆ
542 *
543 * @param ismap サーバã?サイドã?イメージマップを使用する場合にæŒ?®?
544 */
545 public void setIsmap( final String ismap ) {
546 set( "ismap",getRequestParameter( ismap ) );
547 }
548
549 /**
550 * 【TAG】テーブル形式ã? <td> タグを使用するかどã�?�‹[yes/no/false]を指定しまã�?初期値:yes)ã€?
551 *
552 * @og.tag
553 * 通常(初期値:yes)は、テーブル形式ã?<td> タグを使用して、ラベルとフィールドを整列させますã?
554 * no の場合ã?、tdタグを使用せず、ラベルとフィールドを連続して出力しますã?
555 * false は、ラベルをå?力せずã?フィールドã?み出力しますã?
556 * <og:input name="PN" td="false" />
557 *
558 * @og.rev 2.0.0.8 (2002/10/09) yes/no/false でæŒ?®šするよã�?�«変更
559 *
560 * @param flag [yes:tdタグを使用/no:ラベルとフィールãƒ?false:フィールドã?み]
561 */
562 public void setTd( final String flag ) {
563 String td = nval( getRequestParameter( flag ),td_flag );
564
565 if( check( "|" + td + "|" , "|yes|no|false|" ) ) {
566 td_flag = td;
567 }
568 else {
569 String errMsg = "td 属æ?は、下記ã?中から選択してください。td=["
570 + td + " in [|true|false|label|]";
571 throw new HybsSystemException( errMsg );
572 }
573 }
574
575 /**
576 * 【TAG】ラベルをCSV形式でè¤?•°æŒ?®šしますã?
577 *
578 * @og.tag
579 * シングルラベルの lbl 属æ?との違いは,ここではラベルをè¤?•° カンマ区åˆ?‚Šで
580 * 渡すことが可能であることですã?これによりã€?A,B,C" とã�?�†値に対してã€?
581 * "Aのラベル表示,Bのラベル表示,Cのラベル表示" とã�?�†具合にæ–?—å?ã‚?
582 * 再合成しますã?
583 * これは、SQLæ–??Order By 句で、ソートé?を指定するå?合などに便利ですã?
584 *
585 * <og:orderBy columns="MKNMJP,MKCD,MKNMEN" lbls="MKNMJP,MKCD,MKNMEN" />
586 *
587 * @og.rev 3.5.6.2 (2004/07/05) 先に配å?にåˆ?§£してからリクエスト変数の値を取å¾?
588 * @og.rev 5.2.2.0 (2010/11/01) setMsglbl å»?¢ â‡?setLbl に置換え
589 *
590 * @param lbls è¤?•°ラベルID(カンマ区åˆ?‚Š)
591 */
592 public void setLbls( final String lbls ) {
593
594 String[] array = getCSVParameter( lbls );
595
596 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
597
598 buf.append( getLabel( array[0] ) );
599 for( int i=1; i<array.length; i++ ) {
600 buf.append( "," );
601 buf.append( getLabel( array[i] ) );
602 }
603 // setMsglbl( buf.toString() );
604 setLbl( buf.toString() ); // 5.2.2.0 (2010/11/01) setMsglbl å»?¢ â‡?setLbl に置換え
605 }
606
607 /**
608 * 【TAG】フィールド部åˆ?? colspan を指定しますã?
609 *
610 * @og.tag
611 * 通常は、ラベルとフィールドが、別のtdで囲われますã?しかしã?場合によってはã€?
612 * フィールド部の長ã�?‚«ラãƒ?�Œある場合ã?上下ã?カラãƒ?�¨の位置関係がおかしくなりã?
613 * ラベルとフィールドが離れて表示されるケースがありますã?
614 * こã?場合ã?長ã�?ƒ•ィールド部を持つカラãƒ?�«、colspan 属æ?を指定するとã€?
615 * そã?åˆ??カラãƒ?‚’割り当てることにより、上下ã?カラãƒ?�¨の位置関係を
616 * 調ç¯?�™ることが可能になりますã?
617 * 通常はã€? を指定して、フィールドã?ラベル、フィールドã?
618 * çµ?�¿合わせ部åˆ?�«ã€?•·ã�?ƒ•ィールドが適用されるよã�?�«使用しますã?
619 *
620 * <og:input name="PN" colspan="3" />
621 *
622 * @og.rev 3.0.1.4 (2003/03/17) colspan 属æ?を追åŠ??
623 *
624 * @param sp フィールド部åˆ??colspan
625 */
626 public void setColspan( final String sp ) {
627 colspan = nval( getRequestParameter( sp ),colspan );
628 if( colspan.length() > 0 ) {
629 colspan = " colspan=\"" + colspan + "\" ";
630 }
631 }
632
633 /**
634 * 【TAG】å?力カーソルを指定されたname属æ?のフィールドへ自動的に移動しますã?
635 *
636 * @og.tag
637 * JavaScript の onKeyup イベントを利用して、最大桁数まで入力するとã€?
638 * 次のフィールドに、è?動的に飛ã?ように設定しますã?
639 * 引数は、次に飛ã?すフィールドã? name 属æ?ですã?
640 * 実行するには、JavaScript の nextForm ファンクションがå¿?¦�ですã?(default.js でæŒ?®?
641 *
642 * @og.rev 3.5.4.2 (2003/12/15) 新規追åŠ?
643 *
644 * @param name 次にフォーカスを移すタグのname属æ?
645 */
646 public void setNextForm( final String name ) {
647 nextForm = nval( getRequestParameter( name ),nextForm );
648 }
649
650 /**
651 * こã?オブジェクトã?æ–?—å?表現を返しますã?
652 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
653 *
654 * @return こã?クラスのæ–?—å?表現
655 */
656 @Override
657 public String toString() {
658 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
659 .println( "VERSION" ,VERSION )
660 .println( "td_flag" ,td_flag )
661 .println( "colspan" ,colspan )
662 .println( "nextForm" ,nextForm )
663 .println( "CHECK_TYPE" ,CHECK_TYPE )
664 .println( "HTML_LABEL_SEPARATOR" ,CLM )
665 .println( "HTML_COLUMNS_MAXSIZE" ,COLUMNS_MAXSIZE )
666 .println( "Other..." ,getAttributes().getAttribute() )
667 .fixForm().toString() ;
668 }
669 }