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 */ 016package org.opengion.hayabusa.taglib; 017 018import org.opengion.hayabusa.common.HybsSystem; 019import org.opengion.hayabusa.common.HybsSystemException; 020import org.opengion.hayabusa.resource.GUIInfo; 021import org.opengion.fukurou.util.XHTMLTag; 022import org.opengion.fukurou.util.TagBuffer; 023import org.opengion.fukurou.util.StringUtil ; 024 025import static org.opengion.fukurou.util.StringUtil.nval ; 026import org.opengion.fukurou.util.EnumType ; 027 028import 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 * ●形式:<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 */ 088public 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 urlEnc2 = XHTMLTag.urlEncode( keys2,vals2 ); 245 href = XHTMLTag.addUrlEncode( href,urlEnc2 ); 246 247 String urlEnc = XHTMLTag.urlEncode( keys,vals ); 248 href = XHTMLTag.addUrlEncode( href,urlEnc ); 249 250 set( "href",href ); 251 252 return XHTMLTag.link( getAttributes() ) ; 253 } 254 255 /** 256 * 戻るボタンのフォームを作成します。 257 * 258 * @og.rev 3.5.5.0 (2004/03/12) 戻るアドレスを、GUIInfoより取得するように変更。 259 * @og.rev 3.5.5.5 (2004/04/23) hidden の出力に、XHTMLTag.hidden を使用します。 260 * @og.rev 3.8.1.2 (2005/12/19) メソッド名変更、inputタグ⇒buttonタグ変更 261 * @og.rev 4.0.1.0 (2007/12/17) BACK_ADDRESS対応 262 * @og.rev 5.0.2.0 (2009/11/01) 相対パスでの戻るリンク対応 263 * 264 * @return 戻るボタンのフォーム 265 */ 266 private String makeButtonTag() { 267 268 String href = get( "href" ); 269 if( href == null ) { 270 // 3.5.5.0 (2004/03/12) 271 // 5.0.2.0 (2009/11/01) 相対パスでの戻る対応 272 if( backAddress == null || "relButton".equalsIgnoreCase( type ) ) { // 4.0.1.0 (2007/12/18) if文化 273 GUIInfo guiInfo = getGUIInfo( gamenId ); 274 String address = guiInfo.getRealAddress(); 275 set( "action", address + "index.jsp" ); 276 } 277 else { 278 set( "action", backAddress ); // 4.0.1.0 (2007/12/18) 279 } 280 } 281 else { 282 set( "action",href ) ; 283 } 284 285 StringBuilder body = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 286 287 // 3.8.1.2 (2005/12/19) inputタグ⇒buttonタグへ変更。 288 TagBuffer tag = new TagBuffer( "button" ); 289 tag.add( "type","submit" ); 290 tag.add( "accesskey",get( "accesskey" ) ); 291 tag.setBody( getMsglbl( gamenId ) ); 292 body.append( tag.makeTag() ); 293 body.append( HybsSystem.CR ); 294 295 // command を hidden で作成します。 296 body.append( XHTMLTag.hidden( "command",command ) ); // hidden(name,value); 297 body.append( HybsSystem.CR ); 298 299 // GAMENID を hidden で作成します。 300 body.append( XHTMLTag.hidden( "GAMENID",gamenId ) ); // hidden(name,value); 301 body.append( HybsSystem.CR ); 302 303 // keys,vals を hidden で作成します。 304 if( keys != null ) { 305 if( keys.length != vals.length ) { 306 String errMsg = "キーとバリューの個数が異なります。" 307 + HybsSystem.CR 308 + " keys.length=[" + keys.length + "] vals.length=[" + vals.length + "]" 309 + " keys=" + StringUtil.array2csv( keys ) + HybsSystem.CR 310 + " vals=" + StringUtil.array2csv( vals ) ; // 5.1.8.0 (2010/07/01) errMsg 修正 311 throw new HybsSystemException( errMsg ); 312 } 313 314 for( int i=0; i<keys.length; i++ ) { 315 body.append( XHTMLTag.hidden( keys[i],vals[i] ) ); // hidden(name,value); 316 body.append( HybsSystem.CR ); 317 } 318 } 319 320 // 3.7.0.3 (2005/03/01) 戻る行番号を、BACK_ROW_KEYより取得し、SEL_ROW で渡す。 321 String rowkey = HybsSystem.BACK_ROW_KEY + getGUIInfo( "GUI.KEY" ); 322 String rowVal = (String)getSessionAttribute( rowkey ); 323 // 3.7.0.5 (2005/04/11) null の時は、返さないように変更 324 if( rowVal != null ) { 325 body.append( XHTMLTag.hidden( "SEL_ROW",rowVal ) ); // hidden(name,value); 326 body.append( HybsSystem.CR ); 327 } 328 329 set( "body",body.toString() ); 330 331 return XHTMLTag.form( getAttributes() ) ; 332 } 333 334 /** 335 * 戻るリンク(historyBack)を作成します。 336 * 337 * @og.rev 3.5.4.0 (2003/11/25) 履歴(history)オブジェクトのback() メソッドを利用した戻る機能を追加します。 338 * 339 * @return 戻るリンク 340 */ 341 private String makeHistoryBackTag() { 342 StringBuilder link = new StringBuilder(); 343 344 link.append( "<a onClick=\"history.back()\">" ); 345 link.append( getMsglbl( gamenId ) ); 346 link.append( "</a>" ); 347 348 return link.toString() ; 349 } 350 351 /** 352 * BACK_GAMENID の値を取り出します。 353 * 354 * 値は、キャッシュではなく、session より HybsSystem.BACK_GAMENID_KEY をキーに 355 * 取り出します。 356 * 357 * @og.rev 3.1.8.0 (2003/05/16) BACK_GAMENID のキャッシュの取り出し先を変更する。 358 * 359 * @return BACK_GAMENID の値 360 */ 361 private String getBackGamenId() { 362 String key = HybsSystem.BACK_GAMENID_KEY + getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31) 363 return (String)getSessionAttribute( key ); 364 } 365 366 /** 367 * BACK_ADDRESS の値を取り出します。 368 * 369 * 値は、キャッシュではなく、session より HybsSystem.BACK_ADDRESS_KEY をキーに 370 * 取り出します。 371 * 372 * @og.rev 4.0.1.0 (2007/12/17) メソッド追加 373 * 374 * @return BACK_GAMENID の値 375 */ 376 private String getBackAddress() { 377 String key = HybsSystem.BACK_ADDRESS_KEY + getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31) 378 return (String)getSessionAttribute( key ); 379 } 380 381 /** 382 * 【TAG】ボタンのタイプ[link/button/relLink/relButton/historyBack]を指定します(初期値:link)。 383 * 384 * @og.tag 385 * button と設定すると、戻るボタンに、link と設定すると、戻るリンクになります。 386 * historyBack は、IE等の戻る操作と同じで、JavaScriptのヒストリーバックを行います。 387 * また、relButton、relLinkとすると、それぞれ相対パス(画面IDから飛び先のアドレスを元に生成) 388 * で戻り先のアドレスが生成されます。 389 * 初期値は、戻るリンク(link)です。 390 * 391 * <table border="1" frame="box" rules="all" > 392 * <caption>ボタンのタイプ説明</caption> 393 * <tr><th>タイプ </th><th>説明 </th></tr> 394 * <tr><td>link </td><td>戻るリンク </td></tr> 395 * <tr><td>button </td><td>戻るボタン </td></tr> 396 * <tr><td>relLink </td><td>戻るリンク(相対パス) </td></tr> 397 * <tr><td>relButton </td><td>戻るボタン(相対パス) </td></tr> 398 * <tr><td>historyBack</td><td>通常のヒストリバックボタン </td></tr> 399 * </table> 400 * 401 * @og.rev 5.0.2.0 (2009/11/01) 相対パスでの戻るリンク対応 402 * 403 * @param tp ボタンのタイプ[link/button/relLink/relButton/historyBack] 404 */ 405 public void setType( final String tp ) { 406 type = CHECK_TYPE.nval( tp ); 407 } 408 409 /** 410 * 【TAG】(通常使いません)戻る時に指定する command を設定できます(初期値:RENEW)。 411 * 412 * @og.tag 413 * 通常は、RENEW で戻ります。 414 * (初期値は、RENEW なので設定不要です。) 415 * 416 * @param cmd コマンド 417 */ 418 public void setCommand( final String cmd ) { 419 command = nval( getRequestParameter( cmd ),command ); 420 if( command != null ) { command = command.toUpperCase(Locale.JAPAN); } 421 } 422 423 /** 424 * 【TAG】(通常使いません)戻り先の画面をセットします(初期値:BACK_GAMENID)。 425 * 426 * @og.tag 427 * 通常は、自動的に、BACK_GAMENID の値がセットされますが、 428 * 先祖に戻る(画面A⇒画面B⇒画面C のときに、画面Aに戻る)場合や、 429 * 別の画面に、進む場合に、直接指定します。 430 * (初期値は、来た画面:BACK_GAMENID ですので、設定不要です。) 431 * 値は、キャッシュではなく、session より HybsSystem.BACK_GAMENID_KEY をキーに 432 * 取り出します。 433 * これは、command="NEW" で、BACK_GAMENID リクエストが存在し、BACK_GAMENID と 434 * 自分自身の画面IDが異なる場合のみ、RequestCacheTag#backGamenIdSet メソッドで 435 * session に登録されます。 436 * 437 * @param id 戻り先の画面ID 438 */ 439 public void setGamenId( final String id ) { 440 gamenId = nval( getRequestParameter( id ),gamenId ); 441 } 442 443 /** 444 * 【TAG】リンク先に渡すキーをCSV形式で複数指定します。 445 * 446 * @og.tag 447 * 戻る時に、検索時のキャッシュに指定した引数以外に指定したり、別の値に置き換えたり 448 * する場合のキーを設定できます。カンマ区切りで複数指定できます。 449 * vals 属性には、キーに対応する値を、設定してください。 450 * 例:<b>keys="displayMsg,clear"</b> vals="MSG0065,true" 451 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 452 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 453 * 454 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 455 * 456 * @param key リンク先に渡すキー(例:keys="displayMsg,clear") 457 * @see #setVals( String ) 458 */ 459 public void setKeys( final String key ) { 460 keys = getCSVParameter( key ); 461 } 462 463 /** 464 * 【TAG】keys属性に対応する値をCSV形式で複数指定します。 465 * 466 * @og.tag 467 * キーに設定した値を、カンマ区切り文字で複数して出来ます。 468 * 指定順序は、キーと同じにしておいて下さい。 469 * 例:keys="displayMsg,clear" <b>vals="MSG0065,true"</b> 470 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 471 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 472 * 473 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 474 * 475 * @param val keys属性に対応する値(例:vals="MSG0065,true") 476 * @see #setKeys( String ) 477 */ 478 public void setVals( final String val ) { 479 vals = getCSVParameter( val ); 480 } 481 482 /** 483 * 【HTML】リンク先の表示ターゲットを指定します(初期値:CONTENTS)。 484 * 485 * @og.tag 486 * リンク先の文書を表示させるフレーム、またはウィンドウの名前を指定します。 487 * 488 * @param tgt リンク先の表示ターゲット 489 */ 490 public void setTarget( final String tgt ) { 491 set( "target",getRequestParameter( tgt ) ); 492 } 493 494 /** 495 * 【HTML】リンク先のURLを指定します。 496 * 497 * @og.tag リンク先のURLを指定します。 498 * 499 * @param href リンク先のURL 500 */ 501 public void setHref( final String href ) { 502 set( "href",getRequestParameter( href ) ); 503 } 504 505 /** 506 * メッセージラベル(msglbl)をセットします。 507 * 508 * メッセージラベルは、meg属性か、lbl属性で登録された値を、 509 * それぞれのリソースに応じて各言語に変換した結果を格納しています。 510 * meg属性 と lbl属性は、同時登録できません。 511 * 512 * @og.rev 5.7.1.2 (2013/12/20) msg ⇒ msglbl 変更 513 * 514 * @param gamenId 画面ID 515 * 516 * @return メッセージラベル 517 */ 518 private String getMsglbl( final String gamenId ) { 519 StringBuilder rtn = new StringBuilder(); 520 String msglbl = getMsglbl(); // 5.7.1.2 (2013/12/20) msg ⇒ msglbl 変更 521 522 if( msglbl != null ) { 523 rtn.append( msglbl ); 524 set( "accesskey",nval( get( "accesskey" ),accesskey ) ); 525 rtn.append( "(" ).append( get( "accesskey" ) ).append( ")" ) ; 526 } 527 else if( body != null && body.length() > 0 ) { 528 rtn.append( body ); 529 } 530 else { 531 GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31) 532 if( guiInfo == null ) { return ""; } // 見つからない場合は、アクセス不可 533 534 rtn.append( guiInfo.getLongName() ); 535 } 536 537 return rtn.toString() ; 538 } 539 540 /** 541 * 画面に戻るボタン/リンクを表示するかどうかを条件判定します。 542 * 引数の gamenId は、BACK_GAMENID の事で、このタグの属性定義で設定されて 543 * いない場合は、session より、BACK_GAMENID を取り出します。つまり、取り出す為には、 544 * command="NEW" で、キャッシュに設定しておく必要があります。 545 * 546 * 随時、条件を追加していきます。 547 * 548 * 条件1:自分自身へ戻る機能はサポートできません。 549 * 条件2:command="NEW" で、キャッシュに設定しておく必要がある。 550 * 551 * @og.rev 3.5.5.0 (2004/03/12) デバッグ情報を出力するように機能追加 552 * 553 * @param gmnId 画面ID(BACK_GAMENID) 554 * 555 * @return 判定結果 556 */ 557 private boolean checkCondition( final String gmnId ) { 558 559 String thisGamen = getGUIInfoAttri( "KEY" ); // 4.0.0 (2005/01/31) 560 boolean rtn = gmnId != null 561 && gmnId.length() > 0 562 && ! gmnId.equals( thisGamen ) ; 563 564 // 3.5.5.0 (2004/03/12) 565 if( isDebug() ) { 566 String cmd =pageContext.getRequest().getParameter( "command" ); 567 568 StringBuilder buf = new StringBuilder(); 569 buf.append( getDocumentLink() ); // 4.0.0 (2005/02/28) 570 buf.append( "<pre>" ); 571 buf.append( "command =[" ).append( cmd ).append( "]" ).append( HybsSystem.CR ); 572 buf.append( "type =[" ).append( type ).append( "]" ).append( HybsSystem.CR ); 573 buf.append( "gamenId =[" ).append( gmnId ).append( "]" ).append( HybsSystem.CR ); 574 buf.append( "thisGamen=[" ).append( thisGamen ).append( "]" ).append( HybsSystem.CR ); 575 buf.append( "checkCondition=[" ).append( rtn ).append( "]" ); 576 buf.append( "</pre>" ); 577 jspPrint( buf.toString() ); 578 } 579 580 return rtn ; 581 } 582}