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.fukurou.util.XHTMLTag;
022 import org.opengion.fukurou.util.TagBuffer;
023 import org.opengion.fukurou.util.StringUtil ;
024
025 import static org.opengion.fukurou.util.StringUtil.nval ;
026 import org.opengion.fukurou.util.EnumType ;
027
028 import java.util.Locale ;
029
030 /**
031 * 戻るã?タン/戻るリンクを表示するHTML拡張タグでã�?通常はcustom/query_info.jspにçµ?¾¼み)ã€?
032 *
033 * custom/query_info.jsp にçµ?�¿込ã‚?�“とで、å?てのquery.jspにçµ?¾¼ã‚?º‹ができますã?
034 * 戻るã?タン/リンクを表示するかどã�?�‹の条件判定ã?ã€?
035 * ã€?�¡件1?šè?åˆ??身へ戻る機è?はサポã?トできませんã€?
036 * ã€?�¡件2?šBACK_GAMENID が存在するかã?またã?、gamenId でæŒ?¤ºされたå?合ã?み表示ã€?
037 * ã€?�¡件3?šcommand="NEW" で、キャãƒ?‚·ュに設定しておくå¿?¦�があるã€?
038 *
039 * @og.formSample
040 * ●形式ï¼?lt;og:backGamen keys="?¥?¥?¥" vals="?¥?¥?¥" > ?¥?¥Body?¥?¥ </og:backGamen>
041 * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
042 *
043 * ●Tag定義??
044 * <og:backGamen
045 * type 【TAG】ã?タンのタイプ[link/button/relLink/relButton/historyBack]を指定しまã�?初期値:link)
046 * command 【TAGã€?通常使ã�?�¾せん)戻る時にæŒ?®šすã‚?command を設定できまã�?初期値:RENEW)
047 * gamenId 【TAGã€?通常使ã�?�¾せん)戻りå?の画面をセãƒ?ƒˆしまã�?初期値:BACK_GAMENID)
048 * keys 【TAG】リンク先に渡すキーをCSV形式でè¤?•°æŒ?®šしまã�?
049 * vals 【TAG】keys属æ?に対応するå?をCSV形式でè¤?•°æŒ?®šしまã�?
050 * lbl 【TAG】ラベルリソースのラベルIDを指定しまã�?
051 * href 【HTML】リンク先ã?URLを指定しまã�?
052 * target 【HTML】リンク先ã?表示ターゲãƒ?ƒˆを指定しまã�?初期値:CONTENTS)
053 * id 【HTML】要ç´?�«対して固有ã?名前(id)をつける場合に設定しまã�?
054 * lang 【HTML】要ç´??å†?®¹と他ã?属æ?値のè¨?ª?lang,xml:lang)を指定しまã�?
055 * dir 【HTML】文字表記ã?方å�?dir)を指定しまã�?
056 * title 【HTML】要ç´?�«対する補足çš?ƒ…報(title)を設定しまã�?
057 * style 【HTML】この要ç´?�«対して適用させるスタイルシーãƒ?style)を設定しまã�?
058 * tabindex 【HTML】タブã?移動é?(tabindex)を指定しまã�?0 ??32767)
059 * accesskey 【HTML】アクセスキー(alt+キーで直接æŒ?®?を割り当てまã�?
060 * clazz 【HTML】要ç´?�«対して class 属æ?を設定しまã�?
061 * language 【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
062 * onClick 【HTML】JavaScriptのイベンãƒ?onClick を設定しまã�?ä¾?onClick="renew('query.jsp','QUERY');")
063 * onBlur 【HTML】JavaScriptのイベンãƒ?onBlur を設定しまã�?ä¾?onBlur="this.value=value.toUpperCase();")
064 * onFocus 【HTML】JavaScriptのイベンãƒ?onFocus を設定しまã�?
065 * ondblClick 【HTML】JavaScriptのイベンãƒ?ondblClick を設定しまã�?
066 * onMouseDown 【HTML】JavaScriptのイベンãƒ?onMouseDown を設定しまã�?
067 * onMouseUp 【HTML】JavaScriptのイベンãƒ?onMouseUp を設定しまã�?
068 * onMouseMove 【HTML】JavaScriptのイベンãƒ?onMouseMove を設定しまã�?
069 * onMouseOut 【HTML】JavaScriptのイベンãƒ?onMouseOut を設定しまã�?
070 * onMouseOver 【HTML】JavaScriptのイベンãƒ?onMouseOver を設定しまã�?
071 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
072 * > ... Body ...
073 * </og:backGamen>
074 *
075 * ●使用ä¾?
076 * <og:backGamen keys="displayMsg,clear" vals="MSG0065,true" >
077 * <img src="{@SYS.JSP}/image/back.gif" alt="{@BACK_GAMENID}" />
078 * <og:message lbl="MSG0049" />
079 * </og:backGamen>
080 *
081 * @og.rev 3.1.8.0 (2003/05/16) 新規作æ?
082 * @og.group 画面制御
083 *
084 * @version 4.0
085 * @author Kazuhiko Hasegawa
086 * @since JDK5.0,
087 */
088 public class BackGamenTag extends HTMLTagSupport {
089 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
090 private static final String VERSION = "5.7.1.2 (2013/12/20)" ;
091
092 private static final long serialVersionUID = 571220131220L ;
093
094 // 4.0.0 (2005/05/31) JDK5.0 enum 対å¿?
095 /**
096 * type 属æ?としてæŒ?®šできる選択肢を定義しますã?
097 */
098 private static final EnumType<String> CHECK_TYPE =
099 new EnumType<String>( "ボタンのタイãƒ?,"link" )
100 .append( "link" ,"戻るリンクを作æ?しますã?" )
101 .append( "relLink","戻るリンク(相対パス)を作æ?しますã?" )
102 .append( "button" ,"戻るã?タンを作æ?しますã?" )
103 .append( "relButton","戻るã?タン(相対パス)を作æ?しますã?" )
104 .append( "historyBack","通常のヒストリバックボタンを作æ?しますã?" ) ;
105
106 private String type = CHECK_TYPE.getDefault() ;
107 private String command = "RENEW" ;
108 private String gamenId = null;
109 private String target = "CONTENTS";
110 private String accesskey = "R";
111 private String[] keys = null;
112 private String[] vals = null;
113 private String body = null;
114 private String backAddress = null; // 4.0.1.0 (2007/12/18)
115
116 /**
117 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
118 *
119 * @return 後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
120 */
121 @Override
122 public int doStartTag() {
123 return( EVAL_BODY_BUFFERED ); // Body を評価するã€? extends BodyTagSupport æ™?
124 }
125
126 /**
127 * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
128 *
129 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
130 */
131 @Override
132 public int doAfterBody() {
133 body = getBodyString();
134
135 return(SKIP_BODY);
136 }
137
138 /**
139 * タグリブオブジェクトをリリースしますã?
140 *
141 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
142 *
143 */
144 @Override
145 protected void release2() {
146 super.release2();
147 type = CHECK_TYPE.getDefault() ;
148 command = "RENEW" ;
149 gamenId = null;
150 target = "CONTENTS";
151 accesskey = "R";
152 keys = null;
153 vals = null;
154 body = null;
155 backAddress = null;
156 }
157
158 /**
159 * 戻るã?タン/戻るリンクを作æ?しますã?
160 *
161 * @og.rev 3.1.8.0 (2003/05/16) BACK_GAMENID のキャãƒ?‚·ュの取り出しå?を変更するã€?
162 * @og.rev 3.5.4.0 (2003/11/25) 履歴(history)オブジェクトã?back() メソãƒ?ƒ‰を利用した戻る機è?を追åŠ?�—ますã?
163 * @og.rev 4.0.1.0 (2007/12/17) BackAddress対å¿?
164 * @og.rev 5.0.2.0 (2009/11/01) 相対パスでの戻るリンク対å¿?
165 *
166 * @return 戻るã?タン/戻るリンク
167 */
168 @Override
169 protected String makeTag() {
170 String rtn = "" ;
171
172 if( gamenId == null ) {
173 gamenId = getBackGamenId() ;
174 }
175 if( backAddress == null) { // 4.0.1.0 (2007/12/17)
176 backAddress = getBackAddress();
177 }
178
179 // 4.0.0 (2005/05/31)
180 if( "historyBack".equalsIgnoreCase( type ) ) {
181 String hb = getRequest().getParameter( "historyBack" );
182 if( "1".equals( hb ) ) {
183 rtn = makeHistoryBackTag();
184 }
185 }
186 else {
187 if( checkCondition( gamenId ) ) {
188 set( "target" ,nval( get( "target" ), target ) );
189
190 // 5.0.2.0 (2009/11/01) 相対パスでの戻る対å¿?
191 if( "link".equalsIgnoreCase( type ) || "relLink".equalsIgnoreCase( type ) ) {
192 rtn = makeLinkTag();
193 }
194 else if( "button".equalsIgnoreCase( type ) || "relButton".equalsIgnoreCase( type ) ) {
195 rtn = makeButtonTag(); // 3.8.1.2 (2005/12/19)
196 }
197 else {
198 String errMsg = "æŒ?®šã? type は、下記ã?ç¯?›²でæŒ?®šしてくださいã€?
199 + "type=" + type + " : "
200 + CHECK_TYPE.toString();
201 throw new HybsSystemException( errMsg );
202 }
203 }
204 }
205
206 return rtn ;
207 }
208
209 /**
210 * 戻るリンクを作æ?しますã?
211 *
212 * @og.rev 3.5.5.0 (2004/03/12) 戻るアドレスをã?GUIInfoより取得するよã�?�«変更ã€?
213 * @og.rev 4.0.0.0 (2005/01/31) GUIInfoの実アドレスのパラメータをè?慮するã€?
214 * @og.rev 3.7.0.3 (2005/03/01) 戻る行番号をã?BACK_ROW_KEYより取得し、SEL_ROW で渡すã?
215 * @og.rev 4.0.1.0 (2007/12/17) 戻るアドレスをbackAddressを使ã�?‚ˆã�?�«変更
216 * @og.rev 4.0.2.1 (2007/12/27) リクエスト部からGAMENIDを外してã�?�Ÿがã?二段階戻るå?合に不å?合が出たためå?に戻ã�?
217 * @og.rev 5.0.2.0 (2009/11/01) 相対パスでの戻るリンク対å¿?
218 *
219 * @return 戻るリンク
220 */
221 private String makeLinkTag() {
222 set( "body",getMsglbl( gamenId ) );
223 String href = get( "href" );
224 if( href == null) {
225 // 3.5.5.0 (2004/03/12)
226 // 5.0.2.0 (2009/11/01) 相対パスでの戻る対å¿?
227 if( backAddress == null || "relLink".equalsIgnoreCase( type ) ) {// 4.0.1.0 (2007/12/17) ifæ–?¿½åŠ?
228 GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31)
229 if( guiInfo == null ) { return ""; } // 見つからなã�??合ã?、アクセス不可
230 String address = guiInfo.getRealAddress( "index.jsp" );
231 href = getRequestParameter( address );
232 }
233 else { // 4.0.1.0 (2007/12/17)
234 href = backAddress;
235 }
236 }
237
238 // 3.7.0.3 (2005/03/01) 戻る行番号をã?BACK_ROW_KEYより取得し、SEL_ROW で渡すã?
239 String rowkey = HybsSystem.BACK_ROW_KEY + getGUIInfoAttri( "KEY" );
240 String rowVal = (String)getSessionAttribute( rowkey );
241
242 String[] keys2 = new String[] { "command","GAMENID","SEL_ROW" };
243 String[] vals2 = new String[] { command , gamenId , rowVal };
244 // String[] keys2 = new String[] { "command", "SEL_ROW" }; // 4.0.1.0 (2007/12/18)â†?.0.2.1(2007/12/27)GAMENIDを付けるよã�?�«戻ã�?
245 // String[] vals2 = new String[] { command , rowVal }; // 4.0.1.0 (2007/12/18)→上と同æ§?
246 String urlEnc2 = XHTMLTag.urlEncode( keys2,vals2 );
247 href = XHTMLTag.addUrlEncode( href,urlEnc2 );
248
249 String urlEnc = XHTMLTag.urlEncode( keys,vals );
250 href = XHTMLTag.addUrlEncode( href,urlEnc );
251
252 set( "href",href );
253
254 return XHTMLTag.link( getAttributes() ) ;
255 }
256
257 /**
258 * 戻るã?タンのフォーãƒ?‚’作æ?しますã?
259 *
260 * @og.rev 3.5.5.0 (2004/03/12) 戻るアドレスをã?GUIInfoより取得するよã�?�«変更ã€?
261 * @og.rev 3.5.5.5 (2004/04/23) hidden の出力に、XHTMLTag.hidden を使用しますã?
262 * @og.rev 3.8.1.2 (2005/12/19) メソãƒ?ƒ‰名変更、inputタグ⇒buttonタグ変更
263 * @og.rev 4.0.1.0 (2007/12/17) BACK_ADDRESS対å¿?
264 * @og.rev 5.0.2.0 (2009/11/01) 相対パスでの戻るリンク対å¿?
265 *
266 * @return 戻るã?タンのフォーãƒ?
267 */
268 private String makeButtonTag() {
269
270 String href = get( "href" );
271 if( href == null ) {
272 // 3.5.5.0 (2004/03/12)
273 // 5.0.2.0 (2009/11/01) 相対パスでの戻る対å¿?
274 if( backAddress == null || "relButton".equalsIgnoreCase( type ) ) { // 4.0.1.0 (2007/12/18) ifæ–?Œ–
275 GUIInfo guiInfo = getGUIInfo( gamenId );
276 String address = guiInfo.getRealAddress();
277 set( "action", address + "index.jsp" );
278 }
279 else {
280 set( "action", backAddress ); // 4.0.1.0 (2007/12/18)
281 }
282 }
283 else {
284 set( "action",href ) ;
285 }
286
287 StringBuilder body = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
288
289 // 3.8.1.2 (2005/12/19) inputタグ⇒buttonタグへ変更ã€?
290 TagBuffer tag = new TagBuffer( "button" );
291 tag.add( "type","submit" );
292 tag.add( "accesskey",get( "accesskey" ) );
293 tag.setBody( getMsglbl( gamenId ) );
294 body.append( tag.makeTag() );
295 body.append( HybsSystem.CR );
296
297 // command ã‚?hidden で作æ?しますã?
298 body.append( XHTMLTag.hidden( "command",command ) ); // hidden(name,value);
299 body.append( HybsSystem.CR );
300
301 // GAMENID ã‚?hidden で作æ?しますã?
302 body.append( XHTMLTag.hidden( "GAMENID",gamenId ) ); // hidden(name,value);
303 body.append( HybsSystem.CR );
304
305 // keys,vals ã‚?hidden で作æ?しますã?
306 if( keys != null ) {
307 if( keys.length != vals.length ) {
308 String errMsg = "キーとバリューの個数が異なりますã?"
309 + HybsSystem.CR
310 + " keys.length=[" + keys.length + "] vals.length=[" + vals.length + "]"
311 + " keys=" + StringUtil.array2csv( keys ) + HybsSystem.CR
312 + " vals=" + StringUtil.array2csv( vals ) ; // 5.1.8.0 (2010/07/01) errMsg 修正
313 throw new HybsSystemException( errMsg );
314 }
315
316 for( int i=0; i<keys.length; i++ ) {
317 body.append( XHTMLTag.hidden( keys[i],vals[i] ) ); // hidden(name,value);
318 body.append( HybsSystem.CR );
319 }
320 }
321
322 // 3.7.0.3 (2005/03/01) 戻る行番号をã?BACK_ROW_KEYより取得し、SEL_ROW で渡すã?
323 String rowkey = HybsSystem.BACK_ROW_KEY + getGUIInfo( "GUI.KEY" );
324 String rowVal = (String)getSessionAttribute( rowkey );
325 // 3.7.0.5 (2005/04/11) null の時ã?、返さなã�?‚ˆã�?�«変更
326 if( rowVal != null ) {
327 body.append( XHTMLTag.hidden( "SEL_ROW",rowVal ) ); // hidden(name,value);
328 body.append( HybsSystem.CR );
329 }
330
331 set( "body",body.toString() );
332
333 return XHTMLTag.form( getAttributes() ) ;
334 }
335
336 /**
337 * 戻るリンク(historyBack)を作æ?しますã?
338 *
339 * @og.rev 3.5.4.0 (2003/11/25) 履歴(history)オブジェクトã?back() メソãƒ?ƒ‰を利用した戻る機è?を追åŠ?�—ますã?
340 *
341 * @return 戻るリンク
342 */
343 private String makeHistoryBackTag() {
344 StringBuilder link = new StringBuilder();
345
346 link.append( "<a onClick=\"history.back()\">" );
347 link.append( getMsglbl( gamenId ) );
348 link.append( "</a>" );
349
350 return link.toString() ;
351 }
352
353 /**
354 * BACK_GAMENID の値を取りå?しますã?
355 *
356 * 値は、キャãƒ?‚·ュではなくã?session より HybsSystem.BACK_GAMENID_KEY をキーに
357 * 取り出しますã?
358 *
359 * @og.rev 3.1.8.0 (2003/05/16) BACK_GAMENID のキャãƒ?‚·ュの取り出しå?を変更するã€?
360 *
361 * @return BACK_GAMENID の値
362 */
363 private String getBackGamenId() {
364 String key = HybsSystem.BACK_GAMENID_KEY + getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31)
365 return (String)getSessionAttribute( key );
366 }
367
368 /**
369 * BACK_ADDRESS の値を取りå?しますã?
370 *
371 * 値は、キャãƒ?‚·ュではなくã?session より HybsSystem.BACK_ADDRESS_KEY をキーに
372 * 取り出しますã?
373 *
374 * @og.rev 4.0.1.0 (2007/12/17) メソãƒ?ƒ‰追åŠ?
375 *
376 * @return BACK_GAMENID の値
377 */
378 private String getBackAddress() {
379 String key = HybsSystem.BACK_ADDRESS_KEY + getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31)
380 return (String)getSessionAttribute( key );
381 }
382
383 /**
384 * 【TAG】ã?タンのタイプ[link/button/relLink/relButton/historyBack]を指定しまã�?初期値:link)ã€?
385 *
386 * @og.tag
387 * button と設定すると、戻るã?タンに、link と設定すると、戻るリンクになりますã?
388 * historyBack は、IE等ã?戻る操作と同じで、JavaScriptのヒストリーバックを行いますã?
389 * またã?relButton、relLinkとすると、それぞれ相対パス(画面IDから飛ã?先ã?アドレスをå?に生æ?)
390 * で戻りå?のアドレスが生成されますã?
391 * 初期値は、戻るリンク(link)ですã?
392 *
393 * <table border="1" frame="box" rules="all" >
394 * <caption>ボタンのタイプ説æ˜?/caption>
395 * <tr><th>タイãƒ? </th><th>説æ˜? </th></tr>
396 * <tr><td>link </td><td>戻るリンク </td></tr>
397 * <tr><td>button </td><td>戻るã?タン </td></tr>
398 * <tr><td>relLink </td><td>戻るリンク(相対パス) </td></tr>
399 * <tr><td>relButton </td><td>戻るã?タン(相対パス) </td></tr>
400 * <tr><td>historyBack</td><td>通常のヒストリバックボタン </td></tr>
401 * </table>
402 *
403 * @og.rev 5.0.2.0 (2009/11/01) 相対パスでの戻るリンク対å¿?
404 *
405 * @param tp ボタンのタイプ[link/button/relLink/relButton/historyBack]
406 */
407 public void setType( final String tp ) {
408 type = CHECK_TYPE.nval( tp );
409 }
410
411 /**
412 * 【TAGã€?通常使ã�?�¾せん)戻る時にæŒ?®šすã‚?command を設定できまã�?初期値:RENEW)ã€?
413 *
414 * @og.tag
415 * 通常は、RENEW で戻りますã?
416 * (初期値は、RENEW なので設定不要ですã?)
417 *
418 * @param cmd コマンãƒ?
419 */
420 public void setCommand( final String cmd ) {
421 command = nval( getRequestParameter( cmd ),command );
422 if( command != null ) { command = command.toUpperCase(Locale.JAPAN); }
423 }
424
425 /**
426 * 【TAGã€?通常使ã�?�¾せん)戻りå?の画面をセãƒ?ƒˆしまã�?初期値:BACK_GAMENID)ã€?
427 *
428 * @og.tag
429 * 通常は、è?動的に、BACK_GAMENID の値がセãƒ?ƒˆされますがã€?
430 * 先祖に戻ã‚?画面?¡⇒画面?¢⇒画面?£ のときに、画面?¡に戻ã‚?場合やã€?
431 * 別の画面にã€??ã‚??合に、直接æŒ?®šしますã?
432 * (初期値は、来た画面?šBACK_GAMENID ですã?で、設定不要ですã?)
433 * 値は、キャãƒ?‚·ュではなくã?session より HybsSystem.BACK_GAMENID_KEY をキーに
434 * 取り出しますã?
435 * これは、command="NEW" で、BACK_GAMENID リクエストが存在しã?BACK_GAMENID と
436 * 自åˆ??身の画面IDが異なるå?合ã?み、RequestCacheTag#backGamenIdSet メソãƒ?ƒ‰で
437 * session に登録されますã?
438 *
439 * @param id 戻りå?の画面ID
440 */
441 public void setGamenId( final String id ) {
442 gamenId = nval( getRequestParameter( id ),gamenId );
443 }
444
445 /**
446 * 【TAG】リンク先に渡すキーをCSV形式でè¤?•°æŒ?®šしますã?
447 *
448 * @og.tag
449 * 戻る時に、検索時ã?キャãƒ?‚·ュにæŒ?®šした引数以外にæŒ?®šしたり、別の値に置き換えたã‚?
450 * する場合ã?キーを設定できますã?カンマ区åˆ?‚Šでè¤?•°æŒ?®šできますã?
451 * vals 属æ?には、キーに対応するå?をã?設定してくださいã€?
452 * ä¾?<b>keys="displayMsg,clear"</b> vals="MSG0065,true"
453 * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
454 * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
455 *
456 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用
457 *
458 * @param key リンク先に渡すキー(例:keys="displayMsg,clear")
459 * @see #setVals( String )
460 */
461 public void setKeys( final String key ) {
462 keys = getCSVParameter( key );
463 }
464
465 /**
466 * 【TAG】keys属æ?に対応するå?をCSV形式でè¤?•°æŒ?®šしますã?
467 *
468 * @og.tag
469 * キーに設定したå?をã?カンマ区åˆ?‚Šæ–?—でè¤?•°して出来ますã?
470 * æŒ?®šé?序ã?、キーと同じにしておいて下さã�??
471 * ä¾?keys="displayMsg,clear" <b>vals="MSG0065,true"</b>
472 * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
473 * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
474 *
475 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用
476 *
477 * @param val keys属æ?に対応するå?(例:vals="MSG0065,true")
478 * @see #setKeys( String )
479 */
480 public void setVals( final String val ) {
481 vals = getCSVParameter( val );
482 }
483
484 /**
485 * 【HTML】リンク先ã?表示ターゲãƒ?ƒˆを指定しまã�?初期値:CONTENTS)ã€?
486 *
487 * @og.tag
488 * リンク先ã?æ–?›¸を表示させるフレーãƒ??またã?ウィンドウの名前を指定しますã?
489 *
490 * @param tgt リンク先ã?表示ターゲãƒ?ƒˆ
491 */
492 public void setTarget( final String tgt ) {
493 set( "target",getRequestParameter( tgt ) );
494 }
495
496 /**
497 * 【HTML】リンク先ã?URLを指定しますã?
498 *
499 * @og.tag リンク先ã?URLを指定しますã?
500 *
501 * @param href リンク先ã?URL
502 */
503 public void setHref( final String href ) {
504 set( "href",getRequestParameter( href ) );
505 }
506
507 /**
508 * メãƒ?‚»ージラベル(msglbl)をセãƒ?ƒˆしますã?
509 *
510 * メãƒ?‚»ージラベルは、meg属æ?かã?lbl属æ?で登録されたå?をã?
511 * それぞれのリソースに応じてå�?¨?ªžに変換した結果をæ?納してã�?�¾すã?
512 * meg属æ? と lbl属æ?は、同時登録できませんã€?
513 *
514 * @og.rev 5.7.1.2 (2013/12/20) msg â‡?msglbl 変更
515 *
516 * @param gamenId 画面ID
517 *
518 * @return メãƒ?‚»ージラベル
519 */
520 private String getMsglbl( final String gamenId ) {
521 StringBuilder rtn = new StringBuilder();
522 // String msg = getMsglbl();
523 String msglbl = getMsglbl(); // 5.7.1.2 (2013/12/20) msg â‡?msglbl 変更
524
525 // if( msg != null ) {
526 // rtn.append( msg );
527 if( msglbl != null ) {
528 rtn.append( msglbl );
529 set( "accesskey",nval( get( "accesskey" ),accesskey ) );
530 rtn.append( "(" ).append( get( "accesskey" ) ).append( ")" ) ;
531 }
532 else if( body != null && body.length() > 0 ) {
533 rtn.append( body );
534 }
535 else {
536 GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31)
537 if( guiInfo == null ) { return ""; } // 見つからなã�??合ã?、アクセス不可
538
539 rtn.append( guiInfo.getLongName() );
540 }
541
542 return rtn.toString() ;
543 }
544
545 /**
546 * 画面に戻るã?タン/リンクを表示するかどã�?�‹を条件判定しますã?
547 * 引数の gamenId は、BACK_GAMENID の事で、このタグの属æ?定義で設定されて
548 * ã�?�ªã�??合ã?、session より、BACK_GAMENID を取りå?しますã?つまりã?取り出す為にはã€?
549 * command="NEW" で、キャãƒ?‚·ュに設定しておくå¿?¦�がありますã?
550 *
551 * 随時、条件を追åŠ?�—てã�?��ますã?
552 *
553 * 条件1?šè?åˆ??身へ戻る機è?はサポã?トできませんã€?
554 * 条件2?šcommand="NEW" で、キャãƒ?‚·ュに設定しておくå¿?¦�があるã€?
555 *
556 * @og.rev 3.5.5.0 (2004/03/12) ãƒ?ƒ�ãƒ?‚°æƒ??をå?力するよã�?�«機è?追åŠ?
557 *
558 * @param gmnId 画面ID(BACK_GAMENID)
559 *
560 * @return 判定結果
561 */
562 private boolean checkCondition( final String gmnId ) {
563
564 String thisGamen = getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31)
565 boolean rtn = ( gmnId != null ) &&
566 ( gmnId.length() > 0 ) &&
567 ( ! gmnId.equals( thisGamen ) ) ;
568
569 // 3.5.5.0 (2004/03/12)
570 if( isDebug() ) {
571 String cmd =pageContext.getRequest().getParameter( "command" );
572
573 StringBuilder buf = new StringBuilder();
574 buf.append( getDocumentLink() ); // 4.0.0 (2005/02/28)
575 buf.append( "<pre>" );
576 buf.append( "command =[" ).append( cmd ).append( "]" ).append( HybsSystem.CR );
577 buf.append( "type =[" ).append( type ).append( "]" ).append( HybsSystem.CR );
578 buf.append( "gamenId =[" ).append( gmnId ).append( "]" ).append( HybsSystem.CR );
579 buf.append( "thisGamen=[" ).append( thisGamen ).append( "]" ).append( HybsSystem.CR );
580 buf.append( "checkCondition=[" ).append( rtn ).append( "]" );
581 buf.append( "</pre>" );
582 jspPrint( buf.toString() );
583 }
584
585 return rtn ;
586 }
587 }