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 java.io.File; 019import java.util.List; 020import java.util.ArrayList; 021import java.util.Calendar; 022import java.util.GregorianCalendar; 023import java.util.HashMap; 024import java.util.Map; 025 026import jakarta.servlet.http.HttpServletRequest; 027 028import org.opengion.fukurou.system.OgBuilder ; // 6.4.4.1 (2016/03/18) 029import org.opengion.fukurou.system.DateSet; // 6.4.2.0 (2016/01/29) 030import org.opengion.fukurou.security.HybsCryptography; // 5.8.8.0 (2015/06/05) 031import org.opengion.fukurou.util.StringUtil; 032import org.opengion.fukurou.util.XHTMLTag; 033import org.opengion.fukurou.util.ToString; // 6.1.1.0 (2015/01/17) 034import org.opengion.hayabusa.common.HybsSystem; 035import org.opengion.hayabusa.common.HybsSystemException; 036// import org.opengion.hayabusa.html.CreateToken; // 5.8.2.1 (2014/12/13) 6.9.5.0 (2018/04/23) extToken 廃止 037import org.opengion.hayabusa.resource.GUIInfo; 038import org.opengion.hayabusa.resource.URLXfer; 039 040import static org.opengion.fukurou.util.StringUtil.nval; 041 042/** 043 * HTML のaタグと同等のリンクを作成するHTML拡張タグです。 044 * 045 * @og.formSample 046 * ●形式:<og:link href="…" > ... </og:link > 047 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 048 * 049 * ●Tag定義: 050 * <og:link 051 * type 【HTML】リンク先のMIMEタイプを指定します 052 * name 【HTML】この要素をリンクの対象とするための名前を指定します(HTML5より廃止) 053 * gamenId 【TAG】画面ID属性を登録します 054 * useGamenId 【TAG】GAMENID,BACK_GAMENID 属性を付加するかどうか[true/false]を設定します(初期値:true) 055 * column 【TAG】リンクをつけたいカラムを指定します(ViewLink タグと併用) 056 * keys 【TAG】リンク先に渡すキーをCSV形式で複数指定します 057 * vals 【TAG】リンク先に渡す値をCSV形式で複数指定します 058 * onLink 【TAG】リンクを張る(true or 1)/張らない(false or 0)の設定を指定します(初期値:true) 059 * markList 【TAG】処理するマークを、"|"区切りの文字列で指定します 060 * href 【HTML】リンク先のURLを指定します 061 * target 【HTML】リンク先の表示ターゲットを指定します 062 * caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 063 * caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 064 * caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 065 * caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 066 * caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) 067 * lbl 【TAG】ラベルリソースのラベルIDを指定します 068 * xlink 【TAG】href ではなく、xlink:href を使用するかどうか[true/false]を指定します(初期値:false) 069 * fileCheck 【TAG】ファイルの存在チェックを行うかどうか[true/false]を指定します(初期値:false) 070 * filePath 【TAG】アドレスにファイルのディレクトリ直接のアドレスを指定するかどうか[true/false]設定します(初期値:false) 071 * hreflang 【HTML】リンク先の基本となる言語コードを指定します 072 * rel 【HTML】この文書から見た、href属性で指定されるリンク先との関係を指定します 073 * rev 【HTML】href属性で指定されるリンク先から見た、この文書との関係をしてします 074 * charset 【HTML】リンク先の文字コードセットを指定します 075 * shape 【HTML】リンクボタンの形状(イメージマップ rect/circle/poly/default)を指定します 076 * coords 【HTML】リンクボタンの座標を指定します 077 * id 【HTML】要素に対して固有の名前(id)をつける場合に設定します 078 * lang 【HTML】要素の内容と他の属性値の言語(lang,xml:lang)を指定します 079 * dir 【HTML】文字表記の方向(dir)を指定します 080 * title 【HTML】要素に対する補足的情報(title)を設定します 081 * style 【HTML】この要素に対して適用させるスタイルシート(style)を設定します 082 * tabindex 【HTML】タブの移動順(tabindex)を指定します(0 ~ 32767) 083 * accesskey 【HTML】アクセスキー(alt+キーで直接指定)を割り当てます 084 * clazz 【HTML】要素に対して class 属性を設定します 085 * language 【TAG】タグ内部で使用する言語コード[ja/en/zh/…]を指定します 086 * useDirectJump 【TAG】ダイレクトジャンプを使用するかどうか[true/false]を指定します(初期値:false) 087 * useRequestCache 【TAG】リクエストキャッシュ情報を使用するかどうか[true/false]を指定します(初期値:true) 088 * hrefOnly 【TAG】リンク(アンカータグ)ではなく、href 属性をそのまま返すかどうか[true/false]を指定します(初期値:false) 089 * hrefTarget 【TAG】リンク(アンカータグ)ではなく、href 属性と、target属性を キーも含めて返すかどうか[true/false]を指定します(初期値:false) 090 * delKeys 【TAG】リクエストキャッシュ情報使用時に使用しない(削除する)キーをCSV形式で複数指定します 091 * onClick 【HTML】JavaScriptのイベント onClick を設定します(例:onClick="renew('query.jsp','QUERY');") 092 * onBlur 【HTML】JavaScriptのイベント onBlur を設定します(例:onBlur="this.value=value.toUpperCase();") 093 * onFocus 【HTML】JavaScriptのイベント onFocus を設定します 094 * ondblClick 【HTML】JavaScriptのイベント ondblClick を設定します 095 * onMouseDown 【HTML】JavaScriptのイベント onMouseDown を設定します 096 * onMouseUp 【HTML】JavaScriptのイベント onMouseUp を設定します 097 * onMouseMove 【HTML】JavaScriptのイベント onMouseMove を設定します 098 * onMouseOut 【HTML】JavaScriptのイベント onMouseOut を設定します 099 * onMouseOver 【HTML】JavaScriptのイベント onMouseOver を設定します 100 * roles 【TAG】ロールをセットします 101 * useURLCheck 【TAG】リンクアドレスにURLチェック用の確認キーを付加するかどうか[true/false]を指定します(初期値:false) 102 * urlCheckUser 【TAG】URLチェック用の確認キーに対して、リンクを開くことのできるユーザーIDを指定します(初期値:ログインユーザー) 103 * urlCheckTime 【TAG】URLチェック用の確認キーに対して、リンクの有効期限を指定します(初期値:1440分=1日) 104 * urlCheckCrypt 【TAG】URLチェックの暗号化キーを指定します。受け側に依存します。未指定の場合はデフォルトの値が利用されます。 105 * useHrefEncode 【TAG】href 部分に対して、(;%)の2文字だけ URLEncodeを行うかどうかを指定します(初期値:USE_HREF_URLENCODE[=false]) 106 * strictCheck 【TAG】(通常は使いません)カラムIDの存在チェックを行うかどうか[true/false]を指定します(初期値:true) 107 * forceEnc 【TAG】(通常は使いません) valsの値が[で開始している場合でもURLEncodeを通すかを設定します(初期値:false) 5.10.15.3 (2019/09/27) 108 * useBackLink 【TAG】(通常は使いません) true:相手先に戻るリンクを必ず表示。false:必ず表示しない。未指定(null):従来通り(初期値:null) 7.3.1.0 (2021/02/02) 109 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 110 * > ... Body ... 111 * </og:link> 112 * 113 * 【廃止】6.9.5.0 (2018/04/23) 物理削除 114 * // extToken 【廃止】利用するCreateTokenプラグイン名を設定します。6.9.5.0 (2018/04/23) 115 * 116 * 6.7.6.0 (2017/03/17) [strictCheck属性]は、カラムIDの存在チェックを行うかどうかを指定します(初期値:true) 117 * true カラムIDがDBTableModel に存在しない場合は、エラーになる。 118 * false カラムIDがDBTableModel に存在しない場合は、無視する。 119 * 120 * ●使用例 121 * ・普通のリンク 122 * <og:link gamenId="32ExcelIn" href="direct.jsp" keys="location,filename,modifyType" value="{@GUI.ADDRESS},{@GUI.ADDRESS}.xls,A" target="RESULT" > 123 * <img src="{@SYS.JSP}/image/insert.gif" alt="Excel Insert" /><og:message lbl="MSG0057" /> 124 * </og:link> 125 * 126 * ・検索結果テーブル内でのリンク 127 * <og:viewLink command="{@command}"> 128 * <og:link column="KMZ" gamenId="RK0251" href="index.jsp" target="CONTENTS" 129 * keys="KMZ,ORDER_BY,command" vals="[KMZ],'LKIS',NEW" /> 130 * </og:viewLink> 131 * 132 * ・ダイレクトジャンプ(指定の画面へ直接飛ばす)URL 133 * gamenId を指定しなければこの画面へのURLを作成します。 134 * このURLは、その画面の index.jsp に直接ジャンプするためのURLです。 135 * この場合、useRequestCache="true" が初期値なので、必要なければ、false に設定願います。 136 * <og:link useDirectJump="true" delKeys="pageSize" 137 * keys="location,filename,modifyType" value="{@GUI.ADDRESS},{@GUI.ADDRESS}.xls,A" /> 138 * @og.group 画面表示 139 * 140 * @version 4.0 141 * @author Kazuhiko Hasegawa 142 * @since JDK5.0, 143 */ 144public class LinkTag extends HTMLTagSupport { 145 /** このプログラムのVERSION文字列を設定します。 {@value} */ 146 private static final String VERSION = "7.3.1.0 (2021/02/02)" ; 147 private static final long serialVersionUID = 731020210202L ; 148 149 private static final long INIT_TIME = 24*60*60*1000L ; // 6.2.5.0 (2015/06/05) 1日=24(時)*60(分)*60(秒)*1000(ミリ秒) 150 151 private String column ; 152 private String onLink = "true"; // true または 1 153 private boolean fileCheck ; 154 private boolean filePath ; 155 // 6.4.2.1 (2016/02/05) HybsSystem.url2dir に引数追加。fileURL変数を廃止します。 156 // 7.2.7.0 (2020/08/07) 他の属性の関係で、baseURLをfileURL に変更 157// private String baseURL = HybsSystem.sys( "FILE_URL" ); 158 private String fileURL = HybsSystem.sys( "FILE_URL" ); 159 private String gamenId ; 160 private boolean useGamenId = true; 161 // 3.5.2.0 (2003/10/20) 162 private String markList = "true|TRUE|1"; // true または 1 163 private boolean xlink ; // 3.5.5.0 (2004/03/12) 164 private boolean useDirectJump ; // 3.7.1.0 (2005/04/26) 165 private boolean useRequestCache = true; // 3.7.1.0 (2005/04/26) 166 private int validDuration = -1; 167 private boolean hrefOnly ; // 4.0.0 (2005/11/30) 168 private boolean hrefTarget ; // 5.5.5.6 (2012/08/31) 169 private boolean useHrefEncode = HybsSystem.sysBool( "USE_HREF_URLENCODE" ); // 6.0.2.0 (2014/09/19) 170 private boolean strictCheck = true; // 6.7.6.0 (2017/03/17) カラムIDの存在チェックを行うかどうかを指定します。 171 172 private String[] keys ; // 3.5.6.2 (2004/07/05) 173 private String[] vals ; // 3.5.6.2 (2004/07/05) 174 private String[] delKeys ; // 3.7.1.0 (2005/04/26) 175// private boolean useURLCheck ; // 4.3.7.0 (2009/06/01) 176 private boolean useURLCheck = HybsSystem.sysBool( "LINK_URL_CHECK" ); // 5.10.11.0 (2019/05/03) システムリソースに変更 177 private String urlCheckUser ; // 4.3.7.0 (2009/06/01) 178 private long urlCheckTime = INIT_TIME; // 6.2.5.0 (2015/06/05) 179// private String urlCheckCrypt ; // 5.8.8.0 (2015/06/05) 180 private String urlCheckCrypt = HybsSystem.sys( "URL_CHECK_CRYPT" ); // 5.8.8.0 (2015/06/05) 5.9.32.1 (2018/05/09) urlCheckCrypt初期値をシステムリソースから取得に変更 181// private String extToken ; // 5.8.2.1 (2014/12/13) 6.9.5.0 (2018/04/23) extToken 廃止 182 183// private transient List<CreateToken> ctArray ; // 6.3.9.0 (2015/11/06) transient 追加 6.9.5.0 (2018/04/23) 廃止 184 private boolean useForceEnc ; // 5.10.15.3 (2019/09/27) 強制URLエンコード用 185 private String useBackLink ; // 7.3.1.0 (2021/02/02) 186 187 private static final String SERVER_ACCESS_URL = HybsSystem.sys( "SERVER_ACCESS_URL" ); // 5.10.16.3 (2019/10/25) https://www.xxx:8080 まで 188 189 /** 190 * デフォルトコンストラクター 191 * 192 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 193 */ 194 public LinkTag() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 195 196 /** 197 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 198 * 199 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。ボディが存在する場合のみボディが呼ばれる対応。 200 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 201 * @og.rev 5.7.1.2 (2013/12/20) msg ⇒ msglbl 変更 202 * 203 * @return 後続処理の指示( EVAL_BODY_BUFFERED ) 204 */ 205 @Override 206 public int doStartTag() { 207 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 208 if( useTag() ) { 209 String msglbl = getMsglbl(); // 5.7.1.2 (2013/12/20) msg ⇒ msglbl 変更 210 if( msglbl == null && column != null ) { msglbl = "[" + column + "]"; } 211 set( "body",msglbl ); 212 return EVAL_BODY_BUFFERED ; // Body を評価する。( extends BodyTagSupport 時) 213 } 214 return SKIP_BODY ; // Body を評価しない 215 } 216 217 /** 218 * Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。 219 * 220 * @og.rev 3.1.1.0 (2003/03/28) ボディの内容を取得する処理を、CommonTagSupport で行う。 221 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。ボディが存在する場合のみボディが呼ばれる対応。 222 * 223 * @return 後続処理の指示(SKIP_BODY) 224 */ 225 @Override 226 public int doAfterBody() { 227 final String label = getBodyString(); 228 229 if( label != null && label.length() > 0 ) { 230 set( "body",label ); 231 } 232 233 return SKIP_BODY ; 234 } 235 236 /** 237 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 238 * 239 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 240 * @og.rev 3.1.2.0 (2003/04/07) リンク指定時に、画面IDを渡して、実アドレスを求める事ができる様にする。 241 * @og.rev 3.1.7.0 (2003/05/02) 戻るボタン用のBACK_GAMENID を、引数に追加します。 242 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属性のURLへの自動セットを行うかどうかを決める属性( useGamenId )を追加。 243 * @og.rev 3.1.8.0 (2003/05/16) 画面IDが指定されたときのリンク情報作成方法を通常のリンク時にも適用する。 244 * @og.rev 3.1.8.0 (2003/05/16) 画面のロールに応じて、リンクを張る/張らないを自動判断する。 245 * @og.rev 3.5.2.0 (2003/10/20) markList属性を追加 246 * @og.rev 3.5.5.0 (2004/03/12) xlink属性をAttributeオブジェクトに追加 247 * @og.rev 3.5.6.2 (2004/07/05) makeTag() の処理範囲変更、viewlink へのパラメータ変更。 248 * @og.rev 3.7.1.0 (2005/04/26) ダイレクトジャンプリンク機能を追加 249 * @og.rev 4.0.0.0 (2005/11/30) roles 属性の追加 250 * @og.rev 4.0.0.0 (2005/08/31) 同一カラムの複数登録を許可します。 251 * @og.rev 4.3.0.0 (2008/07/04) ロールモードマルチ対応 252 * @og.rev 4.3.7.1 (2009/06/08) URLチェック機能対応 253 * @og.rev 4.3.7.4 (2009/07/01) 循環参照を解消 254 * @og.rev 4.3.8.0 (2009/08/01) ユーザーIDの外部設定に対応 255 * @og.rev 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 256 * @og.rev 6.0.2.0 (2014/09/19) useHrefEncode 属性対応 257 * @og.rev 5.8.2.1 (2014/12/14) トークンプラグイン対応 258 * @og.rev 5.8.8.0 (2015/06/05) urlCheckCrypt対応 259 * @og.rev 6.2.5.0 (2015/06/05) System.currentTimeMillis() + urlCheckTime を、最初に計算しておく。 260 * @og.rev 6.4.2.1 (2016/02/05) HybsSystem.url2dir に引数追加。fileURL変数を廃止します。 261 * @og.rev 6.7.3.0 (2017/01/27) ViewLinkTag経由の判定を入れる。 262 * @og.rev 6.7.6.0 (2017/03/17) strictCheck 追加。 263 * @og.rev 6.9.5.0 (2018/04/23) extToken 廃止 264 * @og.rev 7.1.0.1 (2020/02/07) hrefOnly属性追加 265 * @og.rev 7.2.7.0 (2020/08/07) 他の属性の関係で、baseURLをfileURL に変更 266 * 267 * @return 後続処理の指示 268 */ 269 @Override 270 public int doEndTag() { 271 debugPrint(); // 4.0.0 (2005/02/28) 272 // 5.2.2.0 (2010/11/01) caseKey 、caseVal 属性対応 273 if( !useTag() ) { return EVAL_PAGE ; } 274 275 // 3.1.8.0 (2003/05/16) GAMENID属性のURLへの自動セットを行うかどうかを決める属性( useGamenId )を追加。 276 // 4.0.0 (2005/11/30) 指定のロールが、アクセス許可の場合は、出力します。 277 final String roles = get( "roles" ); 278 // 4.3.0.0 (2008/07/04) ロールモードマルチ対応 279 if( ! getUser().isAccess( roles ) ) { 280 return EVAL_PAGE ; 281 } 282 283 // 4.3.7.1 (2009/06/08) 284 if( useURLCheck ) { 285 // 4.3.8.0 (2009/08/01) 286 urlCheckUser = nval( urlCheckUser, getUser().getUserID() ); 287 } 288 289 // 6.2.5.0 (2015/06/05) System.currentTimeMillis() + urlCheckTime を、最初に計算しておく。 290 final long plusCheckTime = System.currentTimeMillis() + urlCheckTime ; 291 292 final ViewLinkTag viewlink = (ViewLinkTag)findAncestorWithClass( this,ViewLinkTag.class ); 293 if( viewlink != null ) { 294 if( isGamenCheck() ) { set( "onLink", onLink ); } 295 else { set( "onLink", "false" ); } 296 // 4.3.7.1 (2009/06/08) 297 if( useURLCheck ) { 298 set( "useURLCheck" , "true" ); 299 set( "urlCheckUser" , urlCheckUser ); 300 set( "urlCheckTime" , String.valueOf( plusCheckTime ) ); // 6.2.5.0 (2015/06/05) 301 set( "urlCheckCrypt", urlCheckCrypt ); // 5.8.8.0 (2015/06/05) 302 } 303 set( "markList" , markList ); 304 set( "linkFormat" , makeTag() ); // 3.5.6.2 (2004/07/05) 305 if( hrefOnly ) { 306 set( "hrefOnly" , "true" ); // 7.1.0.1 (2020/02/07) hrefOnly属性追加 307 } 308 309 // 4.0.0 (2005/08/31) 同一カラムの複数登録を許可します。 310 set( "column" , column ); 311// set( "extToken" , extToken ); // 5.8.2.1 (2014/12/13) 6.9.5.0 (2018/04/23) extToken 廃止 312 set( "strictCheck" , String.valueOf( strictCheck ) ); // 6.7.6.0 (2017/03/17) 313 314 // 6.0.2.0 (2014/09/19) useHrefEncode 属性対応 315 if( !useGamenId && useHrefEncode ) { 316 set( "useHrefEncode","true" ); 317 } 318 viewlink.addAttribute( getAttributes() ); 319 } 320 // 3.7.1.0 (2005/04/26) ダイレクトジャンプリンク機能を追加 321 // 画面の利用権限有無などは調査不要 322 else if( useDirectJump ) { 323 jspPrint( makeDirectLink() ); 324 } 325 else { 326 if( isFileCheck() && isGamenCheck() && markList.indexOf( onLink ) >= 0 ) { 327 // 3.5.6.2 (2004/07/05) makeTag() より移動 328 if( filePath ) { 329 final String furl = get( "href" ); 330 331 // 6.4.2.1 (2016/02/05) HybsSystem.url2dir に引数追加。fileURL変数を廃止します。 332 // 7.2.7.0 (2020/08/07) 他の属性の関係で、fileURL に変更 333// final String filename = HybsSystem.url2dir( baseURL,furl ); 334 final String filename = HybsSystem.url2dir( fileURL,furl ); 335 336 set( "href",filename ); 337 } 338 339 // 4.3.7.1 (2009/06/08) 340 // 6.7.3.0 (2017/01/27) ViewLinkTag経由の判定を入れる。 341 String tag = makeTag( false ); // ViewLinkTag経由しない。 342 if( useURLCheck ) { 343 // 5.8.8.0 (2015/06/05) urlCheckCrypt対応 344 HybsCryptography criptCls = null; 345 if( urlCheckCrypt != null && urlCheckCrypt.length() > 0 ){ 346 criptCls = new HybsCryptography( urlCheckCrypt ); 347 } 348 349 if( hrefOnly ) { 350 // 4.3.7.4 (2009/07/01) 循環参照を解消 351 tag = XHTMLTag.addURLCheckKey( tag, HybsSystem.URL_CHECK_KEY, getUser().getUserID(), plusCheckTime, criptCls ); // 5.8.8.0 352 } 353 else { 354 // 4.3.7.4 (2009/07/01) 循環参照を解消 355 tag = XHTMLTag.embedURLCheckKey( tag, HybsSystem.URL_CHECK_KEY, getUser().getUserID(), plusCheckTime, criptCls ); // 5.8.8.0 356 } 357 } 358// // 5.8.2.1 (2014/12/14) URLトークンプラグイン 359// // 6.9.5.0 (2018/04/23) extToken 廃止 360// if( ctArray != null && !ctArray.isEmpty() ){ // 6.1.1.0 (2015/01/17) refactoring 361// for( final CreateToken ct : ctArray){ 362// if( hrefOnly ){ 363// tag = ct.generateURL( tag, plusCheckTime, null ); // 5.8.8.0 364// } 365// else{ 366// tag = ct.embedToken( tag, plusCheckTime, null ); // 5.8.8.0 367// } 368// } 369// } 370 jspPrint( tag ); 371 } 372 } 373 374 return EVAL_PAGE ; 375 } 376 377 /** 378 * タグリブオブジェクトをリリースします。 379 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 380 * 381 * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 382 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 383 * @og.rev 3.1.2.0 (2003/04/07) リンク指定時に、画面IDを渡して、実アドレスを求める事ができる様にする。 384 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属性のURLへの自動セットを行うかどうかを決める属性( useGamenId )を追加。 385 * @og.rev 3.5.2.0 (2003/10/20) markList属性を追加 386 * @og.rev 3.5.5.0 (2004/03/12) xlink属性を追加 387 * @og.rev 3.5.6.2 (2004/07/05) keys , vals属性を追加 388 * @og.rev 3.7.1.0 (2005/04/26) useDirectJump , useRequestCache , delKeys 属性を追加 389 * @og.rev 4.0.0.0 (2005/09/30) validDuration 属性を追加 390 * @og.rev 4.3.7.0 (2009/06/01) useURLCheck属性を追加 391 * @og.rev 5.5.5.6 (2012/08/31) hrefTarget属性を追加 392 * @og.rev 6.0.2.0 (2014/09/19) useHrefEncode属性を追加 393 * @og.rev 5.8.2.1 (2014/12/14) トークンプラグイン対応(extToken,ctArray属性を追加) 394 * @og.rev 5.8.8.0 (2015/06/05) urlCheckCrypt追加 395 * @og.rev 6.2.5.0 (2015/06/05) urlCheckTimeの初期値を、INIT_TIMEに変更 396 * @og.rev 6.4.2.1 (2016/02/05) HybsSystem.url2dir に引数追加。fileURL変数を廃止します。 397 * @og.rev 6.7.6.0 (2017/03/17) strictCheck 追加。 398 * @og.rev 6.9.5.0 (2018/04/23) extToken 廃止 399 * @og.rev 5.9.32.1 (2018/05/09) urlCheckCrypt初期値をシステムリソースから取得に変更 400 * @og.rev 5.10.11.0 (2019/05/03) useURLCheck属性をシステムリソースから取得に変更 401 * @og.rev 5.10.15.3 (2019/09/27) forceEnc追加 402 * @og.rev 7.2.7.0 (2020/08/07) 他の属性の関係で、baseURLをfileURL に変更 403 * @og.rev 7.3.1.0 (2021/02/02) useBackLink 追加。 404 */ 405 @Override 406 protected void release2() { 407 super.release2(); 408 column = null; 409 onLink = "true"; // true または 1 410 markList = "true|TRUE|1"; // 3.5.2.0 (2003/10/20) 411 fileCheck = false; 412 filePath = false; 413// baseURL = HybsSystem.sys( "FILE_URL" ); 414 fileURL = HybsSystem.sys( "FILE_URL" ); // 7.2.7.0 (2020/08/07) 415 gamenId = null; 416 useGamenId = true; 417 xlink = false; // 3.5.5.0 (2004/03/12) 418 keys = null; // 3.5.6.2 (2004/07/05) 419 vals = null; // 3.5.6.2 (2004/07/05) 420 useDirectJump = false; // 3.7.1.0 (2005/04/26) 421 useRequestCache = true; // 3.7.1.0 (2005/04/26) 422 delKeys = null; // 3.7.1.0 (2005/04/26) 423 validDuration = -1; 424 hrefOnly = false; // 4.0.0 (2005/11/30) 425 hrefTarget = false; // 5.5.5.6 (2012/08/31) 426// useURLCheck = false; // 4.3.7.0 (2009/06/01) 427 useURLCheck = HybsSystem.sysBool( "LINK_URL_CHECK" ); // 5.10.11.0 (2019/05/03) 428 urlCheckUser = null; // 4.3.7.0 (2009/06/01) 429 urlCheckTime = INIT_TIME; // 6.2.5.0 (2015/06/05) 430// urlCheckCrypt = null; // 5.8.8.0 (2015/06/05) 431 urlCheckCrypt = HybsSystem.sys( "URL_CHECK_CRYPT" ); // 5.9.32.1 (2018/05/11) 432 useHrefEncode = HybsSystem.sysBool( "USE_HREF_URLENCODE" ); // 6.0.2.0 (2014/09/19) 433 strictCheck = true; // 6.7.6.0 (2017/03/17) 434// extToken = null; // 5.8.2.1 (2014/12/14) 6.9.5.0 (2018/04/23) extToken 廃止 435// ctArray = null; // 5.8.2.1 (2014/12/14) 6.9.5.0 (2018/04/23) extToken 廃止 436 useForceEnc = false; // 5.10.15.3 (2019/09/27) 437 useBackLink = null; // 7.3.1.0 (2021/02/02) 438 } 439 440 /** 441 * リンクを作成します。 442 * 443 * これは、HTMLTagSupportのmakeTag()のオーバーライド用のメソッドです。 444 * ViewLinkTag経由の場合は、引数 true で、独自のメソッドを呼び出します。 445 * これは、戻り行番号( BACK_ROW={I} )が、処理されないため、IE上でエラーが発生するのを 446 * 避けるためです。 447 * 448 * @og.rev 6.7.3.0 (2017/01/27) Override用のメソッドを用意しておきます。 449 * 450 * @return リンクタグ文字列 451 * @og.rtnNotNull 452 */ 453 @Override 454 protected String makeTag() { 455 return makeTag( true ); // 互換性。ViewLinkTag経由の場合 456 } 457 458 /** 459 * リンクを作成します。 460 * 461 * @og.rev 3.5.5.0 (2004/03/12) xlink 属性に応じたリンク文字を作成します。 462 * @og.rev 3.5.6.2 (2004/07/05) XHTMLTag の変換値のみを返す様に変更。 463 * @og.rev 3.7.0.3 (2005/03/01) リンク作成時に行番号を引数に追加する。 464 * @og.rev 4.0.0.0 (2005/11/30) href 属性のみを返します。 465 * @og.rev 4.0.1.0 (2007/12/17) BACK_ADDRESSの追加 466 * @og.rev 4.3.3.5 (2008/11/08) サーバーアドレスを取得する際に、リクエストから取得するように変更します。 467 * @og.rev 4.3.7.0 (2009/06/01) URLチェック機能対応 468 * @og.rev 4.3.7.1 (2009/06/08) ↑の実装を#doEndTagに移動 469 * @og.rev 5.5.5.6 (2012/08/31) 「href="*******" target="******"」 という キー付きの文字列を作成 470 * @og.rev 6.0.2.0 (2014/09/19) useHrefEncode 属性対応 471 * @og.rev 6.2.0.1 (2015/03/06) hrefアドレスのASCII以外の文字の、URLエンコードを行う。 472 * @og.rev 6.4.4.1 (2016/03/18) StringBuilderの代わりに、OgBuilderを使用する。 473 * @og.rev 6.7.3.0 (2017/01/27) ViewLinkTag経由の判定を入れる。 474 * @og.rev 5.10.15.3 (2019/09/27) forceEnc追加 475 * @og.rev 7.3.1.0 (2021/02/02) useBackLink で戻るリンクの制御を行う。 476 * 477 * @param useViewLink ViewLinkTag経由の判定 [true:ViewLinkTag経由/false:その他] 478 * @return リンクタグ文字列 479 * @og.rtnNotNull 480 */ 481 private String makeTag( final boolean useViewLink ) { 482 483 makeGamenLink(); // 3.5.6.2 (2004/07/05) 484 if( get( "body" ) == null ) { set( "body" , get( "href" ) ); } 485 486 // xlink と通常の link では、URL接続文字が異なる。 487 final String sep = xlink ? "&" : "&" ; 488 489 final OgBuilder urlEncBuf = new OgBuilder() 490// .append( XHTMLTag.urlEncode( keys,vals,sep ) ); 491 .append( XHTMLTag.urlEncode( keys,vals,sep,useForceEnc ) ); // 5.10.15.3 (2019/09/27) 492 // 3.5.6.2 (2004/07/05) addBackGamenId() メソッドの内容を移動 493 if( useGamenId ) { 494 urlEncBuf.appendIf( useViewLink , sep , "BACK_ROW={I}" ) // ViewLinkTag経由の場合のみ、出力します。 495 .append( sep , "BACK_GAMENID=" , getGUIInfoAttri( "KEY" ) ) 496 .appendIf( gamenId != null && !gamenId.isEmpty() // if 497 , sep , "GAMENID=" , gamenId ) 498 .append( sep , "BACK_ADDRESS=" ) 499 .append( getContextURL() , getGUIInfoAttri( "ADDRESS" ) , "/index.jsp" ); 500 } 501 // 6.0.2.0 (2014/09/19) useHrefEncode 属性対応 502 else if( useHrefEncode ) { 503 String furl = get( "href" ); 504 if( furl != null ) { 505 furl = StringUtil.urlEncode2( furl ); // ASCII以外の文字の、URLエンコードを行う。 506 set( "href",furl ); 507 } 508 } 509 510 urlEncBuf.appendNN( sep,"useBackLink=" , useBackLink ); // 7.3.1.0 (2021/02/02) useBackLink で戻るリンクの制御を行う。 511 512 final String urlEnc = urlEncBuf.toString(); 513 514 // 4.0.0 (2005/11/30) href 属性のみを返します。 515 if( hrefOnly ) { 516 return XHTMLTag.addUrlEncode( get( "href" ),urlEnc,sep ); 517 } 518 519 // 5.5.5.6 (2012/08/31) 「href="*******" target="******"」 という キー付きの文字列を作成 520 if( hrefTarget ) { 521 final StringBuilder hrefTemp = new StringBuilder( BUFFER_MIDDLE ); 522 523 // 6.0.2.5 (2014/10/31) char を append する。 524 hrefTemp.append( "href=\"" ).append( XHTMLTag.addUrlEncode( get( "href" ),urlEnc,sep ) ).append( '"' ); 525 526 final String target = get( "target" ) ; 527 if( target != null && !target.isEmpty() ) { 528 hrefTemp.append( " target=\"" ).append( target ).append( '"' ); // 6.0.2.5 (2014/10/31) char を append する。 529 } 530 531 return hrefTemp.toString() ; 532 } 533 534 if( xlink ) { 535 return XHTMLTag.xlink( getAttributes(),urlEnc ) ; 536 } 537 else { 538 return XHTMLTag.link( getAttributes(),urlEnc ) ; 539 } 540 } 541 542 /** 543 * ダイレクトジャンプリンクを作成します。 544 * 545 * gamenId を指定しなければ、この画面が指定されたと考えます。 546 * target を指定しなければ、"_blank" を指定します。 547 * msg がなければ(または、BODY部が空の場合)、画面名にこのリンクを作成します。 548 * 549 * @og.rev 3.7.1.0 (2005/04/26) 新規追加 550 * @og.rev 4.0.0.0 (2005/09/30) リンク文字列をハッシュ化します。 551 * @og.rev 4.3.3.5 (2008/11/08) サーバーアドレスを取得する際に、リクエストから取得するように変更します。 552 * @og.rev 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。 553 * 554 * @return ダイレクトジャンプリンク文字列 555 */ 556 private String makeDirectLink() { 557 558 // gamenId を指定しなければ、この画面が指定されたと考えます。 559 if( gamenId == null ) { 560 gamenId = getGUIInfoAttri( "KEY" ); 561 } 562 563 // キャッシュ情報と keys,vals情報を設定します。 564 if( useRequestCache ) { makeRequestCache2Vals( gamenId ); } 565 final String urlEnc = XHTMLTag.urlEncode( keys,vals ) 566 + "&GAMENID=" + gamenId ; 567 568 String href = get( "href" ); 569 if( href == null || href.isEmpty() ) { 570 // 4.3.3.5 (2008/11/08) サーバーアドレスを取得する際に、リクエストから取得するように変更します。 571 href = getContextURL() + "index.jsp" ; 572 } 573 574 final String redirectURL = href + "?" + urlEnc ; 575 final String name = getGUIInfoAttri( "LNAME" ); 576 577 String validDate = null; // 設定されない場合は、無制限 578 if( validDuration != 0 ) { 579 if( validDuration < 0 ) { // マイナスの場合は、初期値が使われます。 580 validDuration = sysInt( "LINK_VALID_DURATION_DAYS" ); 581 } 582 // ミリ秒 秒 時間 583 final long nowTime = System.currentTimeMillis() + 1000L * 3600L * 24L * validDuration ; 584 validDate = DateSet.getDate( nowTime,"yyyyMMdd" ); // 6.4.2.0 (2016/01/29) 585 } 586 final String userid = getUser().getUserID(); 587 588 final URLXfer xfer = new URLXfer(); 589 // redirectURL,name,validDate,userid 590 return xfer.getRandomURL( redirectURL,name,validDate,userid ); 591 } 592 593 /** 594 * リクエストキャッシュ情報を加味した keys,vals を再作成します。 595 * このメソッドは、ダイレクトジャンプ時のみ有効です。 596 * 597 * リクエスト情報のMapを取り出します。そのとき、keys,vals を優先して 598 * 設定します。 599 * 600 * @og.rev 3.7.1.0 (2005/04/26) 新規追加 601 * 602 * @param gamenId 画面ID (リクエストキャッシュの取り出しキー) 603 */ 604// @SuppressWarnings(value={"unchecked"}) 605 private void makeRequestCache2Vals( final String gamenId ) { 606 final Map<String,String[]> reqMap = new HashMap<>(); 607 608 final String reqKey = HybsSystem.REQ_CACHE_KEY + gamenId ; 609 @SuppressWarnings(value={"unchecked"}) // 8.2.1.0 (2022/07/15) メソッド全体から局所化 610 final Map<String,String[]> attMap = (Map<String,String[]>)getSessionAttribute( reqKey ); 611 if( attMap != null ) { reqMap.putAll( attMap ); } 612 613 if( keys != null ) { 614 for( int i=0; i<keys.length; i++ ) { 615 // keys,vals をキャッシュに上書き( キャッシュは、文字列配列) 616 final String[] temp = new String[] { vals[i] } ; 617 reqMap.put( keys[i],temp ); 618 } 619 } 620 621 // ダイレクトジャンプするための画面IDは、別途設定するため、削除しておきます。 622 reqMap.remove( "GAMENID" ); 623 624 // 使用しないキーを、削除しておきます。 625 if( delKeys != null ) { 626 for( int i=0; i<delKeys.length; i++ ) { 627 reqMap.remove( delKeys[i] ); 628 } 629 } 630 631 // マップキーを取得。キャッシュ値は、String[] なので、複数キー登録する。 632 // 6.3.9.0 (2015/11/06) 配列にせずに、拡張for文で処理する。 633 634 final List<String> v_keys = new ArrayList<>(); 635 final List<String> v_vals = new ArrayList<>(); 636 for( final Map.Entry<String,String[]> entry : reqMap.entrySet() ) { 637 final String kk = entry.getKey(); 638 final String[] vv = entry.getValue(); 639 if( vv != null ) { 640 for( final String val : vv ) { 641 v_keys.add( kk ); 642 v_vals.add( val ); 643 } 644 } 645 } 646 647 keys = v_keys.toArray( new String[v_keys.size()] ); 648 vals = v_vals.toArray( new String[v_vals.size()] ); 649 } 650 651 /** 652 * ファイルの存在チェックを行います。 653 * 654 * 実ファイルは、URL(httpの引数)より、変換して求めます。 655 * 656 * @og.rev 3.1.8.0 (2003/05/16) 画面のロールに応じて、リンクを張る/張らないを自動判断する。 657 * 658 * @return ファイルが存在する(true)/存在しない(false) 659 */ 660 private boolean isFileCheck() { 661 boolean rtn = true; 662 663 if( fileCheck ) { 664 File file = null; 665 666 final String url = get( "href" ); 667 if( url != null ) { 668 final String fin = HybsSystem.url2dir( url ); 669 file = new File( fin ); 670 } 671 rtn = file != null && file.exists() ; 672 } 673 674 return rtn ; 675 } 676 677 /** 678 * リンク先の画面のロールに応じて、リンクを張る/張らないを自動判断を行います。 679 * 680 * リンク先の画面IDは、gamenId 属性で指定してください。それ以外のリンクは、 681 * 自動判断できません。 682 * link タグ単独の場合に、画面にアクセスできない場合は、メッセージも表示されません。 683 * viewLink タグを利用される場合は、リンクのON/OFF で制御します。 684 * 685 * @og.rev 3.1.8.0 (2003/05/16) 画面のロールに応じて、リンクを張る/張らないを自動判断する。 686 * @og.rev 4.0.0.0 (2005/01/31) GUIオブジェクトがマップに無ければ、アクセスできない。 687 * 688 * @return 画面アクセス許可する(true)/許可しない(false) 689 */ 690 private boolean isGamenCheck() { 691 boolean rtn = true; 692 693 if( gamenId != null ) { 694 final GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31) 695 696 // 4.0.0 (2005/01/31) ユーザー毎にアクセスできるGUIが設定されている為 697 // 存在しなければ、アクセス不可ということ。 698 if( guiInfo == null ) { rtn = false; } 699 } 700 701 return rtn ; 702 } 703 704 /** 705 * 画面IDとhref から、指定のURLを作成します。 706 * 707 * @og.rev 3.1.2.0 (2003/04/07) リンク指定時に、画面IDを渡して、実アドレスを求める事ができる様にする。 708 * @og.rev 3.1.8.0 (2003/05/16) リンク作成時に、kyes/values が null の時の処理の修正。 709 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属性のURLへの自動セットを行うかどうかを決める属性( useGamenId )を追加。 710 * @og.rev 3.1.8.0 (2003/05/16) 画面IDが指定されたときのリンク情報作成方法を通常のリンク時にも適用する。 711 * @og.rev 3.5.5.0 (2004/03/12) URLを求めるのに、GUIInfo#getRealAddress() を使用する。 712 * @og.rev 4.0.0.0 (2005/01/31) GUIInfoの実アドレスのパラメータを考慮する。 713 * 714 */ 715 private void makeGamenLink() { 716 if( gamenId == null || gamenId.isEmpty() ) { return ; } // 4.0.0 (2005/11/30) 717 718 final GUIInfo guiInfo = getGUIInfo( gamenId ); // 4.0.0 (2005/01/31) 719 if( guiInfo == null ) { return ; } // 見つからない場合は、アクセス不可 720 721 final String address = guiInfo.getRealAddress( get( "href" ) ); 722 final String url = getRequestParameter( address ); 723 set( "href",url ); 724 725 final String label = guiInfo.getLabel(); 726 if( get( "title" ) == null ) { 727 set( "title","To:" + label ); 728 } 729 if( get( "body" ) == null ) { 730 set( "body",label ); 731 } 732 } 733 734 /** 735 * リクエストからサーバーアドレス(例:http://hn5120:8824/ver4/jsp/)を取得します。 736 * 737 * システムリソースに、SERVER_ACCESS_URL キーで設定されているアドレスが優先されます。 738 * 例)https://www.xxx:8080 まで 739 * 740 * @og.rev 4.3.3.5 (2008/11/08) 新規追加。 741 * @og.rev 5.4.3.8 (2011/01/24) プロトコルhttps対応 742 * @og.rev 5.10.16.3 (2019/10/25) accessURL対応 743 * 744 * @return サーバーアドレス文字列 745 * @og.rtnNotNull 746 */ 747 private String getContextURL() { 748 final HttpServletRequest request = (HttpServletRequest) getRequest(); 749// final StringBuilder link = new StringBuilder( BUFFER_MIDDLE ) 750// .append( request.getScheme() ).append( "://" ) // 5.4.3.8 751// .append( request.getServerName() ).append( ':' ) // 6.0.2.5 (2014/10/31) char を append する。 752// .append( request.getServerPort() ) 753// .append( request.getContextPath() ) 754// .append( "/jsp/" ); 755// return link.toString(); 756 757 final StringBuilder link = new StringBuilder( BUFFER_MIDDLE ); 758 if( StringUtil.isEmpty( SERVER_ACCESS_URL ) ) { 759 //link.append( "http://" ); 760 link.append( request.getScheme() ).append( "://" ) // 5.4.3.8 761 .append( request.getServerName() ).append( ':' ) 762 .append( request.getServerPort() ); 763 } 764 else { 765 link.append( SERVER_ACCESS_URL ); // 5.10.16.3 (2019/10/25) accessURL対応 766 } 767 768 return link.append( request.getContextPath() ).append( "/jsp/" ).toString(); 769 } 770 771 /** 772 * 【HTML】リンク先のMIMEタイプを指定します。 773 * 774 * @og.tag リンク先のMIMEタイプを指定します。 775 * 776 * @param type MIMEタイプ 777 */ 778 public void setType( final String type ) { 779 set( "type",getRequestParameter( type ) ); 780 } 781 782 /** 783 * 【HTML】この要素をリンクの対象とするための名前を指定します。 784 * 785 * @og.tag この要素をリンクの対象とするための名前を指定します。 786 * 787 * ※ HTML5では、a要素のname属性は廃止されています。 788 * HTML4.01におけるname属性は、ウェブページ内の特定個所に名前を付けて、 789 * ページ内リンクを作成する際などに使用していました。 HTML5で同様の 790 * 機能を作成する場合にはid属性を使用します。 id属性は、ひとつの 791 * 文書の中では重複して同じ名前を付けることはできないので、 792 * ウェブページ内の場所を一意に特定できます。 793 * 794 * @param name 名前 795 * @see <a href="http://www.htmq.com/html5/a.shtml" target="_blank" >a</a> 796 */ 797 public void setName( final String name ) { 798 set( "name",getRequestParameter( name ) ); 799 } 800 801 /** 802 * 【TAG】リンクをつけたいカラムを指定します(ViewLink タグと併用)。 803 * 804 * @og.tag 805 * このカラム名のTableModelに対して、 ViewLink タグが存在する場合は, 806 * リンクを張ります。 807 * 808 * @param clm カラム 809 */ 810 public void setColumn( final String clm ) { 811 this.column = getRequestParameter( clm ); 812 } 813 814 /** 815 * 【HTML】リンク先のURLを指定します。 816 * 817 * @og.tag リンク先のURLを指定します。 818 * 819 * @param href リンク先のURL 820 */ 821 public void setHref( final String href ) { 822 set( "href",getRequestParameter( href ) ); 823 } 824 825 /** 826 * 【HTML】リンク先の基本となる言語コードを指定します。 827 * 828 * @og.tag リンク先の基本となる言語コードを指定します。 829 * 830 * @param hreflang 言語コード 831 */ 832 public void setHreflang( final String hreflang ) { 833 set( "hreflang",getRequestParameter( hreflang ) ); 834 } 835 836 /** 837 * 【HTML】この文書から見た、href属性で指定されるリンク先との関係を指定します。 838 * 839 * @og.tag この文書から見た、href属性で指定されるリンク先との関係を指定します。 840 * 841 * @param rel リンク先との関係 842 */ 843 public void setRel( final String rel ) { 844 set( "rel",getRequestParameter( rel ) ); 845 } 846 847 /** 848 * 【HTML】href属性で指定されるリンク先から見た、この文書との関係をしてします。 849 * 850 * @og.tag href属性で指定されるリンク先から見た、この文書との関係をしてします。 851 * 852 * @param rev リンク先から見たこの文書との関係 853 */ 854 public void setRev( final String rev ) { 855 set( "rev",getRequestParameter( rev ) ); 856 } 857 858 /** 859 * 【HTML】リンク先の文字コードセットを指定します。 860 * 861 * @og.tag リンク先の文字コードセットを指定します。 862 * 863 * @param charset 文字コードセット 864 */ 865 public void setCharset( final String charset ) { 866 set( "charset",getRequestParameter( charset ) ); 867 } 868 869 /** 870 * 【HTML】リンク先の表示ターゲットを指定します。 871 * 872 * @og.tag リンク先の文書を表示させるフレーム、またはウィンドウの名前を指定します。 873 * 874 * @param target ターゲット 875 */ 876 public void setTarget( final String target ) { 877 set( "target",getRequestParameter( target ) ); 878 } 879 880 /** 881 * 【HTML】リンクボタンの形状[rect/circle/poly/default]を指定します。 882 * 883 * @og.tag HTMLのイメージマップとして指定できる設定値[rect/circle/poly/default]を指定します。 884 * 885 * @param shape 形状 [rect/circle/poly/default] 886 */ 887 public void setShape( final String shape ) { 888 set( "shape",getRequestParameter( shape ) ); 889 } 890 891 /** 892 * 【HTML】リンクボタンの座標を指定します。 893 * 894 * @og.tag 895 * coords セット 896 * 897 * @param coords リンクボタンの座標 898 */ 899 public void setCoords( final String coords ) { 900 set( "coords",getRequestParameter( coords ) ); 901 } 902 903 /** 904 * 【TAG】リンク先に渡すキーをCSV形式で複数指定します。 905 * 906 * @og.tag リンク先に渡すキーを指定します。 907 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 908 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 909 * 910 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 911 * 912 * @param key キー(CSV形式) 913 */ 914 public void setKeys( final String key ) { 915 keys = getCSVParameter( key ); 916 } 917 918 /** 919 * 【TAG】リンク先に渡す値をCSV形式で複数指定します。 920 * 921 * @og.tag リンク先に渡す値を指定します。 922 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 923 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 924 * keys,vals を使用すると、URLエンコードされます。 925 * 926 * @og.rev 3.5.6.2 (2004/07/05) CommonTagSupport#getCSVParameter を使用 927 * 928 * @param val 値(CSV形式) 929 */ 930 public void setVals( final String val ) { 931 vals = getCSVParameter( val ); 932 } 933 934 /** 935 * 【TAG】リンクを張る(true or 1)/張らない(false or 0)の設定を指定します(初期値:true)。 936 * 937 * @og.tag 938 * リンクを張る場合は、"true"(または "1") リンクを張らない 939 * 場合は, "true以外"(または "0")をセットします。 940 * 初期値は、 "true"(リンクを張る)です。 941 * さらに、[カラム名] で、動的にカラムの値で、リンクを張る、張らないを 942 * 選ぶ事が可能になります。値は、"true"(または "1") で、マークします。 943 * 追記 3.5.2.0 (2003/10/20):markList属性に、処理対象文字列郡を指定できます。 944 * これにより、リンクを処理するかどうかの判断が、true,1 以外にも使用できるようになりました。 945 * 946 * @og.rev 3.5.2.0 (2003/10/20) markList属性を追加 947 * 948 * @param flag リンクの設定 [true,1:リンクを張る/true,1以外:リンクを張らない] 949 */ 950 public void setOnLink( final String flag ) { 951 onLink = nval( getRequestParameter( flag ),onLink ); 952 } 953 954 /** 955 * 【TAG】ファイルの存在チェックを行うかどうか[true/false]を指定します(初期値:false)。 956 * 957 * @og.tag 958 * "true"の場合は、ファイルの存在チェックを行い、ファイルがあれば 959 * リンクを張ります。ファイルが存在しない場合は, 何も表示されません。 960 * 初期値は、 "false"(ファイルチェックを行わない)です。 961 * 注意:現状、viewLink タグからの使用は出来ませんので、ご了承願います。 962 * 963 * @param flag 存在チェック [true:行う/false:行わない]) 964 */ 965 public void setFileCheck( final String flag ) { 966 fileCheck = nval( getRequestParameter( flag ),fileCheck ); 967 } 968 969 /** 970 * 【TAG】アドレスにファイルのディレクトリ直接のアドレスを指定するかどうか[true/false]設定します(初期値:false)。 971 * 972 * @og.tag 973 * "true"の場合は、ファイルの物理ディレクトリをリンクします。 974 * 初期値は、 "false"(ファイルの直接アドレスを行わない)です。 975 * 976 * @param flag ファイルのディレクトリ直接のアドレスの指定 [true:直接アドレス/その他:通常のURL] 977 */ 978 public void setFilePath( final String flag ) { 979 filePath = nval( getRequestParameter( flag ),filePath ); 980 } 981 982 /** 983 * 【TAG】画面ID を指定します。 984 * 985 * @og.tag 986 * gamenId 属性は、画面IDをキーに、実アドレスを求めるのに使用します。 987 * 画面IDが指定された場合は、実アドレスに変換する。指定されない場合は、 988 * href 属性をそのままリンク情報を作成します。 989 * 画面IDを指定する場合の href は、JSPファイル名(例えば、index.jsp 等)です。 990 * ※ 画面ID属性は、[カラム名]等の動的指定はできません。 991 * 992 * @og.rev 3.1.2.0 (2003/04/07) リンク指定時に、画面IDを渡して、実アドレスを求める事ができる様にする。 993 * 994 * @param id 画面ID属性 995 */ 996 public void setGamenId( final String id ) { 997 gamenId = nval( getRequestParameter( id ),gamenId ); 998 } 999 1000 /** 1001 * 【TAG】GAMENID,BACK_GAMENID 属性を付加するかどうか[true/false]を設定します(初期値:true)。 1002 * 1003 * @og.tag 1004 * "true"の場合は、GAMENID,BACK_GAMENID 属性を href に追加します。(?KEY1=VAL1&KEY2=VAL2・・・) 1005 * "false"の場合は、付加しません。 1006 * JavaScript や、通常のファイル( .html や .pdf 等)に、GAMENID,BACK_GAMENID 属性を付けないように 1007 * する事が出来ます。 1008 * 初期値は、 "true"(GAMENID,BACK_GAMENID 属性を href に追加する)です。 1009 * 1010 * @og.rev 3.1.8.0 (2003/05/16) GAMENID属性のURLへの自動セットを行うかどうかを決める属性( useGamenId )を追加。 1011 * 1012 * @param flag BACK_GAMENID属性の追加可否 [true:追加する/その他:追加しない] 1013 */ 1014 public void setUseGamenId( final String flag ) { 1015 useGamenId = nval( getRequestParameter( flag ),useGamenId ); 1016 } 1017 1018 /** 1019 * 【TAG】処理するマークを含むような文字列を、"|"区切りの文字列で指定します(初期値:"true|TRUE|1")。 1020 * 1021 * @og.tag 1022 * markListで与えられた文字列に、onLink文字列(大文字/小文字の区別あり)が 1023 * 含まれていれば、処理します。 1024 * 例えば、"A","B","C" という文字列が、onLink で指定された 1025 * 場合に処理するようにしたい場合は、"A|B|C" をセットします。 1026 * markList には、[カラム名]指定が可能です。 1027 * 初期値は、 "true|TRUE|1"です。 1028 * 1029 * @og.rev 3.5.2.0 (2003/10/20) 新規追加 1030 * 1031 * @param list 処理するマーク (indexOf による含む/含まない判定) 1032 */ 1033 public void setMarkList( final String list ) { 1034 markList = nval( getRequestParameter( list ),markList ); 1035 } 1036 1037 /** 1038 * 【TAG】href ではなく、xlink:href を使用するかどうか[true/false]を指定します(初期値:false)。 1039 * 1040 * @og.tag 1041 * xlink:href 属性は、XMLでのリンクを指定します。その場合、href 属性で指定した 1042 * 内容は、xlink:href に置き換えられます。 1043 * また、URL文字列の接続文字列(&)を、(&amp;)で接続します。これは、xlink として、 1044 * XMLファイルに埋め込む場合に、置き換えが必要な為です。 1045 * 初期値は、 "false"(通常の href) です。 1046 * 1047 * @og.rev 3.5.5.0 (2004/03/12) 新規追加 1048 * 1049 * @param lnk XMLリンクを使用可否 [true:する/false:しない] 1050 */ 1051 public void setXlink( final String lnk ) { 1052 xlink = nval( getRequestParameter( lnk ),xlink ); 1053 } 1054 1055 /** 1056 * 【TAG】ダイレクトジャンプを使用するかどうか[true/false]を指定します(初期値:false)。 1057 * 1058 * @og.tag 1059 * ダイレクトジャンプ(指定の画面へ直接飛ばす)は、簡易ワークフロー的に、画面への 1060 * リンクを作成する場合に使用します。一般には、メール本文に記述して、指定の画面まで 1061 * 直接飛ばす場合に使用します。 1062 * このリンクは、その画面の index.jsp に直接ジャンプします。 1063 * 1064 * gamenId を指定しなければ、この画面が指定されたと考えます。 1065 * target を指定しなければ、"_blank" を指定します。 1066 * msg がなければ(または、BODY部が空の場合)、画面名にこのリンクを作成します。 1067 * 初期値は、 "false"(使用しない) です。 1068 * 1069 * @og.rev 3.7.1.0 (2005/04/26) 新規追加 1070 * 1071 * @param directJump ダイレクトジャンプを使用可否 [true:する/false:しない] 1072 */ 1073 public void setUseDirectJump( final String directJump ) { 1074 useDirectJump = nval( getRequestParameter( directJump ),useDirectJump ); 1075 } 1076 1077 /** 1078 * 【TAG】リクエストキャッシュ情報を使用するかどうか[true/false]を指定します(初期値:true)。 1079 * 1080 * @og.tag 1081 * リクエストキャッシュ情報は、戻るリンクで画面を差表示(command=RENEW)する場合に 1082 * 最後に検索に利用された情報をキャッシュしておき、再利用する場合に利用する値です。 1083 * ダイレクトジャンプ機能(useDirectJum=true)の場合のみ有効です。 1084 * 戻るリンクによる再表示は、各画面自身が持っている情報を利用しますが、 1085 * ダイレクトジャンプ等で、すでにキャッシュが存在していない(セッションが異なっている) 1086 * 場合に、リンク情報に直接紐付けて、再検索させる必要がある場合に利用します。 1087 * このキャッシュは、keys,vals による値の再設定で、書き換えることが可能です。 1088 * 1089 * 初期値は、 "true"(使用する) です。 1090 * 1091 * @og.rev 3.7.1.0 (2005/04/26) 新規追加 1092 * 1093 * @param useCache リクエストキャッシュ使用可否 [true:する/false:しない] 1094 */ 1095 public void setUseRequestCache( final String useCache ) { 1096 useRequestCache = nval( getRequestParameter( useCache ),useRequestCache ); 1097 } 1098 1099 /** 1100 * 【TAG】リクエストキャッシュ情報使用時に使用しない(削除する)キーをCSV形式で複数指定します。 1101 * 1102 * @og.tag 1103 * リクエストキャッシュ情報には、一般に検索時に使用されたすべての引数が 1104 * 使用されます。この引数を、転送先画面では、使用しないケースがあり、その場合に、 1105 * 指定のキー情報を、削除します。 1106 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 1107 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 1108 * 1109 * @og.rev 3.7.1.0 (2005/04/26) 新規追加 1110 * 1111 * @param key 使用しない(削除する)キー(CSV形式) 1112 */ 1113 public void setDelKeys( final String key ) { 1114 delKeys = getCSVParameter( key ); 1115 } 1116 1117 /** 1118 * 【TAG】ダイレクトジャンプリンク時のハッシュ化されたURLの有効期間を日数を指定します 1119 * (初期値:LINK_VALID_DURATION_DAYS[={@og.value SystemData#LINK_VALID_DURATION_DAYS}])。 1120 * 1121 * @og.tag 1122 * ダイレクトジャンプリンクの引数を作成する場合、有効期限を指定できます。 1123 * ここでは、設定時刻からの有効期間を日数指定します。 1124 * 実際には、GE17のvalidDateカラムに設定される、日付と現在日を比較して、 1125 * 有効かどうかを判断します。 1126 * ゼロが指定された場合は、制限なしに設定されます。マイナスの場合は、初期値が使われます。 1127 * (初期値:ユーザー定数のLINK_VALID_DURATION_DAYS[={@og.value SystemData#LINK_VALID_DURATION_DAYS}])。 1128 * 1129 * @og.rev 4.0.0.0 (2005/09/30) 新規追加 1130 * 1131 * @param validDura URLの有効期間日数 1132 * @see org.opengion.hayabusa.common.SystemData#LINK_VALID_DURATION_DAYS 1133 */ 1134 public void setValidDuration( final String validDura ) { 1135 validDuration = nval( getRequestParameter( validDura ),validDuration ); 1136 } 1137 1138 /** 1139 * 【TAG】リンク(アンカータグ)ではなく、href 属性をそのまま返すかどうか[true/false]を指定します(初期値:false)。 1140 * 1141 * @og.tag 1142 * 通常のリンクは、アンカータグ(aタグ)の状態で出力されます。その場合、HTML上では 1143 * リンクとして表示されます。このフラグをtrue にセットすると、リンク文字列 1144 * そのものが出力されます。これは、リンク文字列を作成してDBに登録する場合などに 1145 * 使用します。 1146 * 1147 * 7.1.0.1 (2020/02/07) 1148 * hrefOnly 属性を true に設定した場合は、URL全体をurlEncodeします。 1149 * 1150 * 初期値は、false:リンク です。 1151 * 1152 * @og.rev 4.0.0.0 (2005/11/30) 新規追加 1153 * 1154 * @param flag href属性 [true:href属性/false:リンク] 1155 */ 1156 public void setHrefOnly( final String flag ) { 1157 hrefOnly = nval( getRequestParameter( flag ),hrefOnly ); 1158 } 1159 1160 /** 1161 * 【TAG】リンク(アンカータグ)ではなく、href 属性と、target属性を キーも含めて返すかどうか[true/false]を指定します(初期値:false)。 1162 * 1163 * @og.tag 1164 * 内容的には、hrefOnly と類似の機能で、アンカータグ(aタグ)の出力ではなく、href 属性と、 1165 * target属性を キーも含めて作成します。 1166 * 「href="*******" target="******"」 という形式になります。 1167 * これは、クリッカブルマップ等の href 属性と target属性の両方を使用するようなケースで使います。 1168 * また、onLink、markList を使ったリンク作成可否の処理をおこなった場合、通常であれば、 1169 * 指定のカラムの値が取得できますが、その場合は、先頭文字列が、href かどうかを判定することで、 1170 * リンク作成可否の判断が可能です。 1171 * 逆に言えば、この属性を true にセットした場合は、先頭文字列が、href で始まることが保障されます。 1172 * hrefOnly = true と同時に設定した場合は、hrefOnly が優先されます。 1173 * 1174 * 初期値は、false:リンク です。 1175 * 1176 * @og.rev 5.5.5.6 (2012/08/31) 新規追加 1177 * 1178 * @param flag 出力形式 [true:href,target形式/false:リンク] 1179 */ 1180 public void setHrefTarget( final String flag ) { 1181 hrefTarget = nval( getRequestParameter( flag ),hrefTarget ); 1182 } 1183 1184 /** 1185 * 【TAG】リンクアドレスにURLチェック用の確認キーを付加するかどうか[true/false]を指定します(初期値:false)。 1186 * 1187 * @og.tag 1188 * この属性は、URLCheckFilter(org.opengion.hayabusa.filter.URLCheckFilter)と合わせて使用します。 1189 * trueが指定された場合、リンクURLのパラメーターに、URL確認用のパラメーターが出力されます。 1190 * このパラメーターを、URLCheckFilterが復号化し、正式なアクセスであるかどうかの判定を行います。 1191 * 1192 * 初期値は、 システムリソースのLINK_URL_CHECK です。 1193 * 1194 * @og.rev 4.3.7.0 (2009/06/01) 新規追加 1195 * 1196 * @param flag 暗号化するかかどうか [true:暗号化する/false:しない] 1197 * @see org.opengion.hayabusa.filter.URLCheckFilter 1198 */ 1199 public void setUseURLCheck( final String flag ) { 1200 useURLCheck = nval( getRequestParameter( flag ),useURLCheck ); 1201 } 1202 1203 /** 1204 * 【TAG】URLチェック用の確認キーに対して、リンクを開くことのできるユーザーIDを指定します(初期値:ログインユーザー)。 1205 * 1206 * @og.tag 1207 * URLチェック用の確認キーに対して、リンクを開くことのできるユーザーIDを 1208 * CSV形式で指定します。 1209 * "*"が指定された場合、ユーザーチェックは行われません。 1210 * 1211 * 初期値は、 ログインユーザーです。 1212 * 1213 * @og.rev 4.3.8.0 (2009/08/01) 新規追加 1214 * 1215 * @param user リンクにアクセス可能なユーザー一覧 1216 */ 1217 public void setUrlCheckUser( final String user ) { 1218 urlCheckUser = nval( getRequestParameter( user ),urlCheckUser ); 1219 } 1220 1221 /** 1222 * 【TAG】URLチェック用の確認キーに対して、リンクの有効期限を指定します(初期値:60分)。 1223 * 1224 * @og.tag 1225 * URLチェック用の確認キーに対して、リンクが生成されてからの有効期限を分単位で設定します。 1226 * 属性値の先頭に'D'をつけることで、日付指定を行うことができます。 1227 * (D20090612 ⇒ 20090612まで(当日を含む)は有効) 1228 * 1229 * 初期値は、現在時間を基準として+ "1440"(1日) です。 1230 * 1231 * @og.rev 4.3.8.0 (2009/08/01) 新規追加 1232 * @og.rev 6.2.5.0 (2015/06/05) urlCheckTimeの初期値を、INIT_TIMEに変更 1233 * 1234 * @param time リンクの有効期限(分) 1235 */ 1236 public void setUrlCheckTime( final String time ) { 1237 final String tm = getRequestParameter( time ); 1238 1239 if( StringUtil.startsChar( tm , 'D' ) ) { // 6.2.0.0 (2015/02/27) 1文字 String.startsWith 1240 if( tm.length() < 9 ) { 1241 final String errMsg = "urlCheckTime属性の日付はYYYYMMDD形式で指定して下さい。" 1242 + " 値=" + tm ; // 5.1.8.0 (2010/07/01) errMsg 修正 1243 throw new HybsSystemException( errMsg ); 1244 } 1245 final Calendar cal = new GregorianCalendar( 1246 Integer.parseInt( tm.substring( 1, 5 ) ) 1247 ,Integer.parseInt( tm.substring( 5, 7 ) ) - 1 1248 ,Integer.parseInt( tm.substring( 7, 9 ) ) ); // 6.0.2.4 (2014/10/17) メソッド間違い 1249 urlCheckTime = INIT_TIME + cal.getTimeInMillis() - System.currentTimeMillis() ; // 6.2.5.0 (2015/06/05) 1250 } 1251 // 6.2.5.0 (2015/06/05) tm が null でない時のみセット。null の場合は、初期値のままになる。 1252 else if( tm != null ) { 1253 // 6.3.9.0 (2015/11/06) 整数乗算の結果を long にキャストしている(findbugs) 1254 urlCheckTime = 60L * 1000L * Integer.parseInt( tm ) ; 1255 } 1256 } 1257 1258 /** 1259 * 【TAG】URLチェック用の暗号化キーを指定します(初期値:デフォルト)。 1260 * 1261 * @og.tag 1262 * URLチェックに利用される暗号化のキーをしています。 1263 * 受け側の設定(URL_CHECK_CRYPT)に合わせてください。 1264 * 1265 * 未指定の場合は標準が利用されます。 1266 * (システムリソースURL_CHECK_CRYPTが設定されている場合はそちらを利用) 1267 * 1268 * @og.rev 5.8.8.0 (2015/06/05) 新規追加 1269 * 1270 * @param crypt 暗号化キー 1271 */ 1272 public void setUrlCheckCrypt( final String crypt ) { 1273 urlCheckCrypt = nval( getRequestParameter( crypt ),urlCheckCrypt ); 1274 } 1275 1276 /** 1277 * 【TAG】ファイルのhref 部分の一部をURLEncodeするかどうか[true/false]を指定します 1278 * (初期値:USE_HREF_URLENCODE[={@og.value SystemData#USE_HREF_URLENCODE}])。 1279 * 1280 * @og.tag 1281 * ファイル等のリンクで、keys,vals は、URLEncode していましたが、URL に相当する箇所は 1282 * http:// など URLEncode してはいけない箇所がある為、何もしていませんでした。 1283 * ファイルのダウンロード等で、ファイル名に、";" や "%" が存在すると、認識できないため 1284 * ファイルが見つからないエラーが発生していました。 1285 * なお、ファイルに限定する意味で、useGamenId="false" の場合のみ、有効にします。 1286 * (初期値:USE_HREF_URLENCODE[={@og.value SystemData#USE_HREF_URLENCODE}])。 1287 * 1288 * ※ 6.2.0.1 (2015/03/06) ASCII以外の文字+";" と "%"の、URLエンコードを行う様に仕様変更。 1289 * 1290 * @og.rev 6.0.2.0 (2014/09/19) 新規追加 1291 * 1292 * @param useEnc hrefの一部をURLEncode可否 [true:する/false:しない] 1293 */ 1294 public void setUseHrefEncode( final String useEnc ) { 1295 useHrefEncode = nval( getRequestParameter( useEnc ),useHrefEncode ); 1296 } 1297 1298 /** 1299 * 【TAG】(通常は使いません)カラムIDの存在チェックを行うかどうか[true/false]を指定します(初期値:true)。 1300 * 1301 * @og.tag 1302 * true の場合、カラムIDがDBTableModel に存在しない場合は、エラーになります。 1303 * false の場合、カラムIDがDBTableModel に存在しない場合は、無視します。 1304 * これは、検索条件によって、設定されるカラムが異なる場合でも、後続処理を 1305 * 正常に動作させたい場合に、使用します。 1306 * 初期値は true (チェックを行う) です。 1307 * この属性は、column属性とともに、ViewLink タグを使用する場合にのみ有効です。 1308 * 1309 * @og.rev 6.7.6.0 (2017/03/17) strictCheck 追加。 1310 * 1311 * @param check 存在チェック [true:行う/false:行わない] 1312 */ 1313 public void setStrictCheck( final String check ) { 1314 strictCheck = nval( getRequestParameter( check ),strictCheck ); 1315 } 1316 1317 /** 1318 * 【TAG】valsの値が[で開始している場合でもURLEncodeを通すかを設定します(初期値:false)。 1319 * 1320 * @og.tag 1321 * テーブルモデルの値の変換のため、通常は先頭が[の場合はエンコードがかかりません。 1322 * 強制的にかける場合にtrueにします。 1323 * 1324 * @og.rev 5.10.15.3 (2019/09/27) forceEnc追加 1325 * 1326 * @param flg URLEncodeを通す場合は、trueをセット 1327 */ 1328 public void setForceEnc( final String flg ) { 1329 useForceEnc = nval( getRequestParameter( flg ), useForceEnc ); 1330 } 1331 1332 /** 1333 * 【TAG】(通常は使いません) 戻るリンクを表示(true)、必ず表示しない(false)、従来通り(null)を指定します。 1334 * 1335 * @og.tag 1336 * 通常の戻るリンクは、自分自身へのリンク時には出さずに、別画面IDの場合のみ(条件が成立すれば)表示します。 1337 * この属性を使用すると、自分自身へのリンク時でも、戻るリンクを表示できます。 1338 * 別画面へのリンクで、条件が成立していない場合に表示(true)を設定すると、戻ることができないため、 1339 * 自分自身へのリンクを表示しますので、ご注意ください。 1340 * 1341 * true:相手先に(条件が成立すれば)戻るリンクを表示。条件が成立しない場合は、自身へのリンクが表示。 1342 * false:必ず表示しない 1343 * 未指定(null):従来通り…自分自身では戻るリンクを表示せず、別画面の場合のみ表示します。 1344 * 初期値は null (従来通り)です。 1345 * 1346 * @og.rev 7.3.1.0 (2021/02/02) useBackLink 追加。 1347 * 1348 * @param flg URLEncodeを通す場合は、trueをセット 1349 */ 1350 public void setUseBackLink( final String flg ) { 1351 useBackLink = nval( getRequestParameter( flg ), useBackLink ); 1352 } 1353 1354// /** 1355// * 【TAG】外部(プラグイン)のトークンを利用する場合にプラグインを指定します。 1356// * 1357// * @og.tag 1358// * プラグインの名前を指定する事で、該当のCreateTokenを利用して 1359// * URLに対してトークンを付与します。 1360// * (CreatetToken_xxxのxxxを指定します) 1361// * 1362// * CSV形式を分解して、プラグインを配列として持ちます。 1363// * 適応は前から順番に行います。 1364// * 1365// * @og.rev 5.8.2.1 (2014/12/13) 新規追加 1366// * @og.rev 6.4.3.3 (2016/03/04) HybsSystem.newInstance(String,String) への置き換え。 1367// * @og.rev 6.9.5.0 (2018/04/23) extToken 廃止 1368// * 1369// * @param name 利用するCreateTokenプラグイン 1370// */ 1371// public void setExtToken( final String name ) { 1372// extToken = nval( getRequestParameter( name ),extToken ); 1373// ctArray = new ArrayList<>(); 1374// 1375// if( extToken != null && extToken.length() > 0 ) { 1376// final String[] tokens = StringUtil.csv2Array( extToken ); 1377// for( final String tk : tokens ) { 1378// final CreateToken ct = HybsSystem.newInstance( "CreateToken_" , tk ); 1379// ctArray.add( ct ); 1380// } 1381// } 1382// } 1383 1384 /** 1385 * このオブジェクトの文字列表現を返します。 1386 * 基本的にデバッグ目的に使用します。 1387 * 1388 * @return このクラスの文字列表現 1389 * @og.rtnNotNull 1390 */ 1391 @Override 1392 public String toString() { 1393 return ToString.title( this.getClass().getName() ) 1394 .println( "VERSION" ,VERSION ) 1395 .println( "column" ,column ) 1396 .println( "onLink" ,onLink ) 1397 .println( "fileCheck" ,fileCheck ) 1398 .println( "filePath" ,filePath ) 1399 // 7.2.7.0 (2020/08/07) 他の属性の関係で、baseURLをfileURL に変更 1400// .println( "baseURL" ,baseURL ) 1401 .println( "fileURL" ,fileURL ) // 7.2.7.0 (2020/08/07) 1402 .println( "gamenId" ,gamenId ) 1403 .println( "useGamenId" ,useGamenId ) 1404 .println( "markList" ,markList ) 1405 .println( "xlink" ,xlink ) 1406 .println( "useDirectJump" ,useDirectJump ) 1407 .println( "useRequestCache" ,useRequestCache) 1408 .println( "hrefOnly" ,hrefOnly ) 1409 .println( "hrefTarget" ,hrefTarget ) // 5.5.5.6 (2012/08/31) 1410 .println( "strictCheck" ,strictCheck ) // 6.7.6.0 (2017/03/17) 1411 .println( "validDuration" ,validDuration ) 1412 .println( "keys" ,keys ) 1413 .println( "vals" ,vals ) 1414 .println( "delKeys" ,delKeys ) 1415 .println( "useURLCheck" ,useURLCheck ) 1416 .println( "urlCheckUser" ,urlCheckUser ) 1417 .println( "urlCheckTime" ,urlCheckTime ) 1418 .println( "Other..." ,getAttributes().getAttribute() ) 1419 .fixForm().toString() ; 1420 } 1421}