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.hayabusa.resource.GUIInfo;
021 import org.opengion.hayabusa.resource.LabelInterface;
022 import org.opengion.fukurou.util.XHTMLTag;
023
024 import org.opengion.fukurou.util.StringUtil ;
025 import static org.opengion.fukurou.util.StringUtil.nval ;
026
027 import java.util.Locale ;
028
029 /**
030 * サブミãƒ?ƒˆボタンを表示するHTML拡張タグでã�?forward.jsp の commonForward タグと同時に使用しまã�?ã€?
031 *
032 * こã?タグは、value にæŒ?®šされた値??.jsp" の画面へサブミãƒ?ƒˆしますã?
033 * そã?際ã?command に設定された値ã‚?送信しますã?
034 * 従来は、value に、copy/modify/delete など、å?ç�?�™るJSPをå?別に設定してã�?�¾したのでã€?
035 * command と lbl が未設定時には、value の値を使用してã�?�¾したã€?下位互換性のため残してã�?�¾ã�?
036 * Ver5 になって、update.jsp ですべての処ç�?‚’行う方向で開発するに当たりã?
037 * command と lbl を記述するå¿?¦�がでてきましたã€?
038 * そこで、現在æœ?–°版では、action 属æ?を用意し、command を記述するã�?�‘で良くなりましたã€?
039 *
040 * [action属æ?] [初期設定されるパラメータ郡]
041 * INSERT value="update" command="INSERT" lbl="INSERT" accesskey="I"
042 * COPY value="update" command="COPY" lbl="COPY" accesskey="C"
043 * MODIFY value="update" command="MODIFY" lbl="MODIFY" accesskey="M"
044 * DELETE value="update" command="DELETE" lbl="DELETE" accesskey="Z"
045 * ENTRY value="entry" command="ENTRY" lbl="ENTRY" accesskey="E"
046 * RESET value="reset" command="RESET" lbl="ENTRY" accesskey="R"
047 *
048 * columnWritable , noWritable の属æ?追åŠ?5.2.2.0 (2010/11/01))
049 * これは、各コマンドごとに、次ペã?ジの view のカラãƒ?±žæ?の設定に利用する属æ?ですã?
050 * Ver4 では、keys,vals のä¸?ˆ¬引数として設定してã�?�¾したがã?ここでは、専用属æ?として
051 * 用意してã�?�¾すã?
052 *
053 * @og.formSample
054 * ●形式ï¼?lt;og:submit value="…" lbl="…" />
055 * ●body?šなã�?
056 *
057 * ●Tag定義??
058 * <og:submit
059 * action 【TAG】アクション(INSERT,COPY,MODIFY,DELETE,ENTRY,RESET)を指定しまã�?
060 * value 【TAG】forward したã�?¼ª?³?°ファイル名を記述しまã�?ä¾?insert,copy,modify,delete など)
061 * command 【TAG】å?ç�?‚³マンドを登録しまã�?初期値:大æ–?—ã? value 属æ?値[INSERT,COPY,MODIFY,DELETE など])
062 * gamenId 【TAG】gamenId 属æ?を登録しまã�?
063 * lbl 【TAG】ラベルリソースのラベルIDを指定しまã�?
064 * target 【TAG】サブミãƒ?ƒˆ先ã?æ–?›¸を表示させるフレーãƒ??またã?ウィンドウの名前を指定しまã�?
065 * keys 【TAG】ã?タン専用のリクエストキーをCSV形式でè¤?•°æŒ?®šしまã�?
066 * vals 【TAG】ã?タン専用のリクエストå?をCSV形式でè¤?•°æŒ?®šしまã�?
067 * roles 【TAG】ロールをセãƒ?ƒˆしまã�?
068 * dbkeys 【TAG】commonForward の dbkeys にカラãƒ?Œ‡定を行いまã�?
069 * optionAttributes 【TAG】JavaScript などの HTML基本タグ以外ã?属æ?をã?そã?ままタグとして使用しまã�?
070 * columnWritable 【TAG】書き込み可能カラãƒ?��をã?カンマ区åˆ?‚Šで与えまã�?
071 * noWritable 【TAG】書き込み不可カラãƒ?��をã?カンマ区åˆ?‚Šで与えまã�?
072 * caseKey 【TAG】このタグ自体を利用するかどã�?�‹の条件キーを指定しまã�?初期値:null)
073 * caseVal 【TAG】このタグ自体を利用するかどã�?�‹の条件値を指定しまã�?初期値:null)
074 * caseNN 【TAG】指定ã?値がã?null/ゼロæ–?—å? でなã�??å�?Not Null=NN)は、このタグは使用されまã�?初期値:true)
075 * caseNull 【TAG】指定ã?値がã?null/ゼロæ–?—å? の場合ã?、このタグは使用されまã�?初期値:true)
076 * id 【HTML】要ç´?�«対して固有ã?名前(id)をつける場合に設定しまã�?
077 * lang 【HTML】要ç´??å†?®¹と他ã?属æ?値のè¨?ª?lang,xml:lang)を指定しまã�?
078 * dir 【HTML】文字表記ã?方å�?dir)を指定しまã�?
079 * title 【HTML】要ç´?�«対する補足çš?ƒ…報(title)を設定しまã�?
080 * style 【HTML】この要ç´?�«対して適用させるスタイルシーãƒ?style)を設定しまã�?
081 * readonly 【TAG】その部品に対して変更がå?来なã�?‚ˆã�?�«(readonly)æŒ?®šしまã�?サーバã?に送信されã‚?
082 * disabled 【TAG】その部品に対してã€?�¸択や変更がå?来なã�?‚ˆã�?�«(disabled)æŒ?®šしまã�?サーバã?に送信されなã�?
083 * tabindex 【HTML】タブã?移動é?(tabindex)を指定しまã�?0 ??32767)
084 * accesskey 【HTML】アクセスキー(alt+キーで直接æŒ?®?を割り当てまã�?
085 * clazz 【HTML】要ç´?�«対して class 属æ?を設定しまã�?
086 * language 【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
087 * onClick 【HTML】JavaScriptのイベンãƒ?onClick を設定しまã�?ä¾?onClick="renew('query.jsp','QUERY');")
088 * onBlur 【HTML】JavaScriptのイベンãƒ?onBlur を設定しまã�?ä¾?onBlur="this.value=value.toUpperCase();")
089 * onFocus 【HTML】JavaScriptのイベンãƒ?onFocus を設定しまã�?
090 * ondblClick 【HTML】JavaScriptのイベンãƒ?ondblClick を設定しまã�?
091 * onMouseDown 【HTML】JavaScriptのイベンãƒ?onMouseDown を設定しまã�?
092 * onMouseUp 【HTML】JavaScriptのイベンãƒ?onMouseUp を設定しまã�?
093 * onMouseMove 【HTML】JavaScriptのイベンãƒ?onMouseMove を設定しまã�?
094 * onMouseOut 【HTML】JavaScriptのイベンãƒ?onMouseOut を設定しまã�?
095 * onMouseOver 【HTML】JavaScriptのイベンãƒ?onMouseOver を設定しまã�?
096 * autofocus 【HTML5】指定したå?力æ¬?�«カーソルが当たって自動的にフォーカスされますã?
097 * img 【TAG】画像ã?タンを作る場合ã?、画像ファイルを指定しまã�?
098 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
099 * />
100 *
101 * ●使用ä¾?
102 * Ver5 推奨ケース?š指定ã? action 属æ?に設定された値に応じたã?value , command , lbl , accesskey をå?期化しますã?
103 * (5.2.2.0 (2010/11/01)以é™?
104 * <og:writeCheck>
105 * <og:submit action="COPY" noWritable="FGJ,UNIQ" />
106 * <og:submit action="MODIFY" noWritable="CLM,FGJ,UNIQ" />
107 * <og:submit action="DELETE" columnWritable="null" />
108 * <og:submit gamenId="GF9110" value="index" dbkeys="SYSTEM_ID,LANG,CLM" command="NEW" lbl="GF9100" target="CONTENTS" />
109 * <br />
110 * </og:writeCheck>
111 *
112 * Ver4 ä¸?ˆ¬çš?�ªケース?švalue は共通になったためã?command と lbl の設定がå¿?¦?下位互換性のための設å®?
113 * <og:writeCheck>
114 * <og:submit value="update" command="COPY" lbl="COPY" accesskey="C" />
115 * <og:submit value="update" command="MODIFY" lbl="MODIFY" accesskey="M" />
116 * <og:submit value="update" command="DELETE" lbl="DELETE" accesskey="Z" />
117 * <og:submit gamenId="GF9110" value="index" dbkeys="SYSTEM_ID,LANG,CLM" command="NEW" lbl="GF9100" target="CONTENTS" />
118 * <br />
119 * </og:writeCheck>
120 *
121 * 従来のケース?švalue に設定された値JSPに対してサブミãƒ?ƒˆされますã?(下位互換性のための設å®?
122 * <og:writeCheck>
123 * <og:submit value="copy" lbl="MSG0035" accesskey="C" />
124 * <og:submit value="modify" lbl="MSG0036" accesskey="M" />
125 * <og:submit value="delete" lbl="MSG0037" accesskey="Z" />
126 * <og:submit gamenId="GF9110" value="index" dbkeys="SYSTEM_ID,LANG,CLM" command="NEW" lbl="GF9100" target="CONTENTS" />
127 * <br />
128 * </og:writeCheck>
129 *
130 * @og.rev 3.1.1.0 (2003/03/28) 新規作æ?
131 * @og.group 画面制御
132 *
133 * @version 4.0
134 * @author Kazuhiko Hasegawa
135 * @since JDK5.0,
136 */
137 public class SubmitTag extends HTMLTagSupport {
138 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
139 private static final String VERSION = "5.6.0.3 (2012/01/24)" ;
140
141 private static final long serialVersionUID = 560320120124L ;
142
143 // 5.2.2.0 (2010/11/01) 新規追åŠ?
144 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? 新è¦?{@value} */
145 public static final String ACT_INSERT = "INSERT" ;
146 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? è¤?? {@value} */
147 public static final String ACT_COPY = "COPY" ;
148 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? 変更 {@value} */
149 public static final String ACT_MODIFY = "MODIFY" ;
150 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? 削除 {@value} */
151 public static final String ACT_DELETE = "DELETE" ;
152 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? エントリー {@value} */
153 public static final String ACT_ENTRY = "ENTRY" ;
154 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? リセãƒ?ƒˆ {@value} */
155 public static final String ACT_RESET = "RESET" ;
156
157 // 5.2.2.0 (2010/11/01) 新規追åŠ?
158 private static final String[] ACTION_LIST = new String[] {
159 ACT_INSERT , ACT_COPY , ACT_MODIFY , ACT_DELETE , ACT_ENTRY , ACT_RESET };
160
161 // 5.2.2.0 (2010/11/01) 新規追åŠ?
162 private enum ENUM_ACTION {
163 // action value command lbl accesskey
164 INSERT( "update" , "INSERT" , "INSERT" , "I" ),
165 COPY ( "update" , "COPY" , "COPY" , "C" ),
166 MODIFY( "update" , "MODIFY" , "MODIFY" , "M" ),
167 DELETE( "update" , "DELETE" , "DELETE" , "Z" ),
168 ENTRY ( "entry" , "ENTRY" , "ENTRY" , "E" ),
169 RESET ( "reset" , "RESET" , "RESET" , "R" ) ;
170
171 private final String defVal ;
172 private final String defCmd ;
173 private final String defLbl ;
174 private final String defKey ;
175
176 ENUM_ACTION( final String val , final String cmd , final String lbl , final String key ) {
177 defVal = val;
178 defCmd = cmd;
179 defLbl = lbl;
180 defKey = key;
181 }
182
183 public String getDefVal() { return defVal; }
184 public String getDefCmd() { return defCmd; }
185 public String getDefLbl() { return defLbl; }
186 public String getDefKey() { return defKey; }
187 }
188
189 private static final String TYPE = "submit" ;
190 private static final String NAME = "command" ;
191 private static final String MARGIN = "<span style=\"width: 3px;\" ></span>" ;
192
193 private static final String IMG_PRE = "background: url("; // 5.5.0.0 (2012/03/01)
194 private static final String IMG_SUF = ") left top no-repeat;"; // 5.5.0.0 (2012/03/01)
195
196 private String action = null; // 5.2.2.0 (2010/11/01)
197 private String command = null;
198 private String value = null;
199 private String gamenId = null;
200 private String target = null; // 3.5.5.2 (2004/04/02)
201 private String dbkeys = null; // 4.0.0 (2007/05/23)
202
203 private String columnWritable = null; // 5.2.2.0 (2010/11/01)
204 private String noWritable = null; // 5.2.2.0 (2010/11/01)
205
206 private String bgImg = null; // 5.5.0.0 (2012/03/01)
207
208 private String[] keys = null; // 3.5.5.5 (2004/04/23)
209 private String[] vals = null; // 3.5.5.5 (2004/04/23)
210
211 /**
212 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
213 *
214 * @og.rev 5.2.2.0 (2010/11/01) 新規追åŠ?
215 *
216 * @return 後続å?ç�??æŒ?¤º( SKIP_BODY )
217 */
218 @Override
219 public int doStartTag() {
220 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属æ?対å¿?
221 if( useTag() ) {
222 // 5.1.8.0 (2010/07/01) 同時設定不可(columnWritable,noWritable) チェãƒ?‚¯
223 if( columnWritable != null && noWritable != null ) {
224 String errMsg = "columnWritable と noWritable は同時にæŒ?®šできませんã€?
225 + "columnWritable = [" + columnWritable
226 + "] , noWritable = [" + noWritable
227 + "]";
228 throw new HybsSystemException( errMsg );
229 }
230
231 // 5.2.2.0 (2010/11/01) action 属æ?による初期値の設å®?
232 if( action != null ) {
233 ENUM_ACTION eact = ENUM_ACTION.valueOf( action );
234 if( value == null ) { value = eact.getDefVal(); }
235 if( command == null ) { command = eact.getDefCmd(); }
236 if( getMsglbl() == null ) { setLbl( eact.getDefLbl() ); }
237 if( get( "accesskey" ) == null ) { set( "accesskey",eact.getDefKey() ); }
238 }
239 }
240 return( SKIP_BODY );
241 }
242
243 /**
244 * タグリブオブジェクトをリリースしますã?
245 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
246 *
247 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
248 * @og.rev 3.5.5.2 (2004/04/02) target 属æ?の追åŠ?
249 * @og.rev 3.5.5.5 (2004/04/23) keys,vals 属æ?の追åŠ?
250 * @og.rev 5.2.2.0 (2010/11/01) action,columnWritable,noWritable 属æ?の追åŠ?
251 * @og.rev 5.5.0.0 (2012/03/01) bgImg追åŠ?
252 */
253 @Override
254 protected void release2() {
255 super.release2();
256 action = null; // 5.2.2.0 (2010/11/01)
257 command = null;
258 value = null;
259 gamenId = null;
260 target = null; // 3.5.5.2 (2004/04/02)
261 keys = null; // 3.5.5.5 (2004/04/23)
262 vals = null; // 3.5.5.5 (2004/04/23)
263 dbkeys = null; // 4.0.0 (2007/05/23)
264 columnWritable = null; // 5.2.2.0 (2010/11/01)
265 noWritable = null; // 5.2.2.0 (2010/11/01)
266 bgImg = null; // 5.5.0.0 (2012/03/01)
267 }
268
269 /**
270 * サブミãƒ?ƒˆボタンを作æ?しますã?
271 *
272 * @og.rev 3.3.1.1 (2003/07/03) ForwardManager クラスのå»?¢。飛ã?先ã?キャãƒ?‚·ュをå»?¢しますã?
273 * @og.rev 3.5.5.2 (2004/04/02) target 属æ?の追åŠ?
274 * @og.rev 3.5.5.9 (2004/06/07) target 属æ?をã?set ではなã�?add で追åŠ??
275 * @og.rev 3.5.5.9 (2004/06/07) target 属æ?をã?set ではなã�?add で追åŠ??
276 * @og.rev 4.0.0.0 (2005/11/30) title 属æ?が未設定時の処ç�?¿½åŠ?
277 * @og.rev 5.5.0.0 (2012/03/01) bgImg対å¿?
278 * @og.rev 5.6.0.3 (2012/01/24) accesskey に ゼロæ–?—å?を指定したå?合ã?カãƒ?‚³()ã�?�‘が残ってしまã�??
279 *
280 * @return サブミãƒ?ƒˆボタンタグ
281 */
282 @Override
283 protected String makeTag() {
284 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
285
286 if( value == null ) {
287 String errMsg = "value に null がセãƒ?ƒˆされてã�?�¾すã?";
288 throw new HybsSystemException( errMsg );
289 }
290
291 String lbl = nval( getMsglbl(), value.toUpperCase( Locale.JAPAN ) );
292 String accesskey = get( "accesskey" );
293 // if( accesskey != null ) {
294 if( accesskey != null && ! accesskey.isEmpty() ) { // 5.6.0.3 (2012/01/24)
295 lbl = lbl + "(" + accesskey + ")" ;
296 }
297
298 // キャãƒ?‚·ュエントリ
299 command = nval( command,value.toUpperCase(Locale.JAPAN) );
300 String valueLink = getValueLink( gamenId , value );
301 if( valueLink == null ) { return ""; } // アクセス不可時ã? null
302
303 // 3.3.1.1 (2003/07/03) ForwardManager クラスのå»?¢。飛ã?先ã?キャãƒ?‚·ュをå»?¢しますã?
304 rtn.append( getHiddenTag( command, lbl, valueLink ) );
305 rtn.append( HybsSystem.CR );
306
307 set( "type",TYPE );
308 set( "name",NAME );
309 set( "value",lbl );
310
311 // 3.5.5.2 (2004/04/02) target 属æ?の追åŠ?
312 if( target != null ) {
313 add( "onClick","this.form.target='" + target + "'",";" ); // 3.5.5.9 (2004/06/07)
314 }
315
316 // 4.0.0 (2005/11/30) title 属æ?が未設定時の処ç�?¿½åŠ?
317 if( get( "title" ) == null ) {
318 LabelInterface msglbl = getLabelInterface();
319 if( msglbl != null ) {
320 String desc = msglbl.getDescription();
321 if( desc != null && desc.length() > 0 ) {
322 set( "title",desc );
323 }
324 }
325 }
326
327 // 5.5.0.0 Img対å¿?スタイル属æ?に追åŠ?�™るã?
328 if( bgImg != null && bgImg.length() > 0 ){
329 add("style",IMG_PRE+bgImg+IMG_SUF);
330 }
331
332 rtn.append( XHTMLTag.input( getAttributes() ) );
333 rtn.append( MARGIN );
334 rtn.append( HybsSystem.CR );
335
336 return rtn.toString() ;
337 }
338
339 /**
340 * 画面?©?¤とvalue から、指定ã??µ?²?¬を作æ?しますã?
341 * 画面へのアクセス許可が与えられてã�?�ªã�??合ã?、null を返しますã?
342 *
343 * @og.rev 3.5.5.0 (2004/03/12) URLを求めるã?に、GUIInfo#getRealAddress() を使用するã€?
344 * @og.rev 4.0.0.0 (2005/01/31) GUIInfoの実アドレスのパラメータをè?慮するã€?
345 *
346 * @param gamenId 画面?©?¤
347 * @param value 飛ã?しå?(XXXX.jspのXXXX部åˆ?
348 *
349 * @return ?µ?²?¬æ–?—å?(アクセス不可時ã? null)
350 */
351 private String getValueLink( final String gamenId,final String value ) {
352 String link = value + ".jsp";
353
354 if( gamenId != null && gamenId.length() > 0 ) {
355 GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31)
356 if( guiInfo == null ) { return null; } // 見つからなã�??合ã?、アクセス不可
357
358 String address = guiInfo.getRealAddress( link );
359 link = getRequestParameter( address );
360 }
361
362 return link ;
363 }
364
365 /**
366 * 【TAG】アクション(INSERT,COPY,MODIFY,DELETE,ENTRY,RESET)を指定しますã?
367 *
368 * @og.tag
369 * Ver5 になって、update.jsp ですべての処ç�?‚’行う方向で開発するに当たりã?
370 * command と lbl を記述するå¿?¦�がでてきましたã€?
371 * そこで、現在æœ?–°版では、action 属æ?を用意し、command を記述するã�?�‘で良くなりましたã€?
372 *
373 * [action属æ?] [初期設定されるパラメータ郡]
374 * INSERT value="update" command="INSERT" lbl="INSERT" accesskey="I"
375 * COPY value="update" command="COPY" lbl="COPY" accesskey="C"
376 * MODIFY value="update" command="MODIFY" lbl="MODIFY" accesskey="M"
377 * DELETE value="update" command="DELETE" lbl="DELETE" accesskey="Z"
378 * ENTRY value="entry" command="ENTRY" lbl="ENTRY" accesskey="E"
379 * RESET value="reset" command="RESET" lbl="ENTRY" accesskey="R"
380 *
381 * @og.rev 5.2.2.0 (2010/11/01) 新規追åŠ?
382 *
383 * @param act アクションæ–?—å?
384 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.SubmitTag.ACT_COPY">アクション定数</a>
385 */
386 public void setAction( final String act ) {
387 action = getRequestParameter( act );
388
389 if( ! check( action, ACTION_LIST ) ) {
390
391 StringBuilder errMsg = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
392 errMsg.append( "æŒ?®šã?アクションは実行できません。アクションエラー" );
393 errMsg.append( HybsSystem.CR );
394 errMsg.append( "action=[" ).append( action ).append( "] " );
395 errMsg.append( HybsSystem.CR );
396
397 for( int i=0; i<ACTION_LIST.length; i++ ) {
398 errMsg.append( " | " );
399 errMsg.append( ACTION_LIST[i] );
400 }
401 errMsg.append( " | " );
402 throw new HybsSystemException( errMsg.toString() );
403 }
404 }
405
406 /**
407 * 【TAG】forward したã�?¼ª?³?°ファイル名を記述しまã�?ä¾?insert,copy,modify,delete など)ã€?
408 *
409 * @og.tag
410 * ?ª?³?°ファイル名ã?、標準で、insert,copy,modify,delete などとæŒ?®šしますã?
411 * 実際には、各JSP画面(insert.jsp,copy.jsp,modify.jsp,delete.jsp )に
412 * リクエストが転送されますã?
413 * こã??ª?³?°ファイル名ã?、同ä¸?”»面?©?¤å†??フォルãƒ?�«属してã�?‚‹å¿?¦�がありますã?
414 * ここの?©?¤はã€?¼ª?³?°画面そã?もã?ですã?で、大æ–?—小文字ã?区別されますã?
415 *
416 * @param val ?ª?³?°ファイルå�?insert,copy,modify,delete など)
417 */
418 public void setValue( final String val ) {
419 value = nval( getRequestParameter( val ),value );
420 if( value == null ) {
421 String errMsg = "value に null がセãƒ?ƒˆされてã�?�¾すã?";
422 throw new HybsSystemException( errMsg );
423 }
424 }
425
426 /**
427 * 【TAG】gamenId 属æ?を登録しますã?
428 *
429 * @og.tag
430 * gamenId 属æ?は、別の画面にforward する場合に使用しますã?
431 * 実際は、forward ではなくã?sendRedirect されますã?
432 *
433 * @param id gamenId 属æ?
434 */
435 public void setGamenId( final String id ) {
436 gamenId = nval( getRequestParameter( id ),gamenId );
437 }
438
439 /**
440 * éš?�—属æ?タグを取得しますã?
441 * å�??タンに設定された値をã?éš?�—フィールドに設定して受け渡ししますã?
442 *
443 * @og.rev 3.3.1.1 (2003/07/03) ForwardManager クラスのå»?¢。飛ã?先ã?キャãƒ?‚·ュをå»?¢しますã?
444 * @og.rev 3.5.5.5 (2004/04/23) 余計なボタン関連æƒ??を転送しなã�?‚ºに、キーを変更しますã?
445 * @og.rev 3.5.5.5 (2004/04/23) keys,vals 属æ?でæŒ?®šしたå?をã?出力しますã?
446 * @og.rev 3.5.5.5 (2004/04/23) hidden の出力に、XHTMLTag.hidden を使用しますã?
447 * @og.rev 3.8.0.8 (2005/10/03) gamenId が指定されてã�?‚‹場合ã?、BACK_GAMENID をå?力するã?
448 * @og.rev 5.2.2.0 (2010/11/01) columnWritable,noWritable 属æ?の追åŠ?
449 *
450 * @param command コマンãƒ?
451 * @param lbl ラベルID
452 * @param valueLink 飛ã?å…?RL
453 *
454 * @return éš?�—属æ?タグ
455 */
456 private String getHiddenTag( final String command, final String lbl, final String valueLink ) {
457
458 StringBuilder strRet = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
459
460 String prefix = HybsSystem.NO_XFER_KEY + lbl ;
461 strRet.append( XHTMLTag.hidden( prefix ,valueLink ) ); // 3.5.5.5 (2004/04/23)
462 strRet.append( XHTMLTag.hidden( prefix + "CMD",command ) ); // 3.5.5.5 (2004/04/23)
463
464 // 3.5.5.5 (2004/04/23) keys,vals 属æ?でæŒ?®šしたå?をã?出力しますã?
465 if( keys != null ) {
466 if( keys.length != vals.length ) {
467 String errMsg = "SubmitTag の keys と vals の引数の個数が異なりますã?" + HybsSystem.CR
468 + "keys=[" + StringUtil.array2csv( keys ) + "], vals=["
469 + StringUtil.array2csv( vals ) + "]" ;
470 throw new HybsSystemException( errMsg );
471 }
472 for( int i=0; i<keys.length; i++ ) {
473 strRet.append( XHTMLTag.hidden( prefix + "KEY_" + keys[i],vals[i] ) ); // 3.5.5.5 (2004/04/23)
474 }
475 }
476
477 // 4.0.0 (2007/05/23) dbkeys が指定されてã�?‚‹場å�?
478 if( dbkeys != null && dbkeys.length() > 0 ) {
479 strRet.append( XHTMLTag.hidden( prefix + "KEY_dbkeys",dbkeys ) ); // 4.0.0 (2007/05/23)
480 }
481
482 // 3.8.0.8 (2005/10/03) gamenId が指定されてã�?‚‹場合ã?、BACK_GAMENID をå?力するã?
483 if( gamenId != null && gamenId.length() > 0 ) {
484 String backGamenId = getGUIInfoAttri( "KEY" );
485 strRet.append( XHTMLTag.hidden( prefix + "KEY_BACK_GAMENID",backGamenId ) );
486 }
487
488 // 5.2.2.0 (2010/11/01) columnWritable,noWritable 属æ?の追åŠ?
489 if( columnWritable != null ) {
490 strRet.append( XHTMLTag.hidden( prefix + "KEY_columnWritable",columnWritable ) );
491 }
492 if( noWritable != null ) {
493 strRet.append( XHTMLTag.hidden( prefix + "KEY_noWritable",noWritable ) );
494 }
495
496 return strRet.toString();
497 }
498
499 /**
500 * 【TAG】å?ç�?‚³マンドを登録しまã�?初期値:大æ–?—ã? value 属æ?値[INSERT,COPY,MODIFY,DELETE など])ã€?
501 *
502 * @og.tag
503 * command 属æ?を指定しなã�??合ã?、このvalue 属æ?値がã?コマンドになりますã?
504 * value 属æ?に、insert,copy,modify,delete などとæŒ?®šされてã�?�Ÿ場合ã?ã€?
505 * それぞれ、INSERT,COPY,MODIFY,DELETE とã�?�†コマンドになりますã?
506 * コマンドã?、大æ–?—ですã?
507 *
508 * @param cmd コマンãƒ?
509 */
510 public void setCommand( final String cmd ) {
511 command = nval( getRequestParameter( cmd ),command );
512 if( command != null ) { command = command.toUpperCase(Locale.JAPAN); }
513 }
514
515 /**
516 * 【TAG】サブミãƒ?ƒˆ先ã?æ–?›¸を表示させるフレーãƒ??またã?ウィンドウの名前を指定しますã?
517 *
518 * @og.tag サブミãƒ?ƒˆ先ã?フレーãƒ?��(ターゲãƒ?ƒˆ属æ?)を設定しますã?
519 *
520 * @og.rev 3.5.5.2 (2004/04/02) 新規追åŠ?
521 *
522 * @param flag サブミãƒ?ƒˆ先ã?æ–?›¸のフレーãƒ?��(ターゲãƒ?ƒˆ属æ?)
523 */
524 public void setTarget( final String flag ) {
525 target = nval( getRequestParameter( flag ),target );
526 }
527
528 /**
529 * 【TAG】ã?タン専用のリクエストキーをCSV形式でè¤?•°æŒ?®šしますã?
530 *
531 * @og.tag
532 * こã?サブミãƒ?ƒˆボタンが押されたå?合ã?み、転送されるリクエスト情報の
533 * キーを設定できますã?カンマ区åˆ?‚Šでè¤?•°æŒ?®šできますã?
534 * vals 属æ?には、キーに対応するå?をã?設定してくださいã€?
535 * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
536 * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
537 *
538 * @og.rev 3.5.5.5 (2004/04/23) 新規追åŠ?
539 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用
540 *
541 * @param key ボタンが押された時に転送するキー
542 */
543 public void setKeys( final String key ) {
544 keys = getCSVParameter( key );
545 }
546
547 /**
548 * 【TAG】ã?タン専用のリクエストå?をCSV形式でè¤?•°æŒ?®šしますã?
549 *
550 * @og.tag
551 * キーに対応したå?をã?カンマ区åˆ?‚Šæ–?—でè¤?•°æŒ?®šå?来ますã?
552 * æŒ?®šé?序ã?、キーと同じにしておいて下さã�??
553 * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
554 * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
555 *
556 * @og.rev 3.5.5.5 (2004/04/23) 新規追åŠ?
557 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用
558 *
559 * @param val keys属æ?に対応するå?
560 */
561 public void setVals( final String val ) {
562 vals = getCSVParameter( val );
563 }
564
565 /**
566 * 【TAG】commonForward の dbkeys にカラãƒ?Œ‡定を行いますã?
567 *
568 * @og.tag
569 * カラãƒ?Œ‡定ã?、CSV形å¼?カンマ区åˆ?‚Š)でæŒ?®šしてくださいã€?
570 * なおã?引数は、è?動的に受けるã?ではなくã?commonForward タグにã€?
571 * dbkeys="{@dbkeys}" の記述はå¿?¦�ですã?
572 *
573 * @og.rev 4.0.0.0 (2007/05/23) 新規追åŠ?
574 *
575 * @param keys dbkeys のにカラãƒ?Œ‡å®?
576 */
577 public void setDbkeys( final String keys ) {
578 dbkeys = nval( getRequestParameter( keys ),dbkeys );
579 }
580
581 /**
582 * 【TAG】書き込み可能カラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
583 *
584 * @og.tag
585 * これは、書き込み不可カラãƒ?��のæŒ?®?noWritable)と同時にセãƒ?ƒˆする
586 * ことは出来ませんã€?
587 * なおã?カラãƒ?��の代わりにã€?null" を指定すると、なにも指定しなã�?�“と
588 * になりますã?つまりã?noWritable にすべてのカラãƒ?‚’æŒ?®šすることと
589 * 同じになりますã?(ãƒ?ƒ•ォルトなので、あまり意味はありませんã€?
590 * "*" を指定すると、すべてのカラãƒ?‚’(columnWritable)æŒ?®šしたことになりますã?
591 *
592 * @og.rev 5.2.2.0 (2010/11/01) 新規追åŠ?
593 *
594 * @param columnName 例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
595 * @see #setNoWritable( String )
596 */
597 public void setColumnWritable( final String columnName ) {
598 columnWritable = nval( getRequestParameter(columnName),null );
599 }
600
601 /**
602 * 【TAG】書き込み不可カラãƒ?��をã?カンマ区åˆ?‚Šで与えますã?
603 *
604 * @og.tag
605 * これは、書き込み可能カラãƒ?��のæŒ?®?columnWritable)と同時にセãƒ?ƒˆする
606 * ことは出来ませんã€?
607 * なおã?カラãƒ?��の代わりにã€?null" を指定すると、なにも指定しなã�?�“と
608 * になりますã?つまりã?columnWritable にすべてのカラãƒ?‚’æŒ?®šすることと
609 * 同じになりますã?
610 * "*" を指定すると、すべてのカラãƒ?‚’(noWritable)æŒ?®šしたことになりますã?
611 *
612 * @og.rev 5.2.2.0 (2010/11/01) 新規追åŠ?
613 *
614 * @param columnName 例ï¼?OYA,KO,HJO,SU,DYSET,DYUPD"
615 * @see #setColumnWritable( String )
616 */
617 public void setNoWritable( final String columnName ) {
618 noWritable = nval( getRequestParameter(columnName),null );
619 }
620
621 /**
622 * 【TAG】画像ã?タンを作る場合ã?、画像ファイルを指定しますã?
623 *
624 * @og.tag
625 * 画像ã?タン作æ?支援の属æ?ですã?
626 * inputタグでtype=imageにした場合ã?IEではname,valueのセãƒ?ƒˆã�?
627 * 次の画面に渡されなã�?»•様になってã�?‚‹ためエンジンのsubmitでは
628 * 利用できませんã€?どのボタンが押されたかåˆ?�‹らなã�?
629 * そこで、typeはsubmitのままcssの背景画像としてここでæŒ?®šしã�?
630 * 画像を配置しますã?
631 * å†?ƒ¨çš?�«はbackground: url(imgFile) left top no-repeat;
632 * をstyleタグに書く事と同じですã?
633 * 高さ、å¹??把握できなã�?�Ÿめã?別途style属æ?でhight,widthを指定して下さã�??
634 *
635 * @og.rev 5.5.0.0 (2012/03/01) 新規追åŠ?
636 *
637 * @param image ボタンの背景画åƒ?
638 */
639 public void setImg( final String image ) {
640 bgImg = nval( getRequestParameter(image),null );
641 }
642
643 /**
644 * こã?オブジェクトã?æ–?—å?表現を返しますã?
645 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
646 *
647 * @return こã?クラスのæ–?—å?表現
648 */
649 @Override
650 public String toString() {
651 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
652 .println( "VERSION" ,VERSION )
653 .println( "command" ,command )
654 .println( "value" ,value )
655 .println( "gamenId" ,gamenId )
656 .println( "target" ,target )
657 .println( "keys" ,keys )
658 .println( "vals" ,vals )
659 .println( "Other..." ,getAttributes().getAttribute() )
660 .fixForm().toString() ;
661 }
662 }