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.fukurou.util.TagBuffer; // 6.1.1.0 (2015/01/17) 019import org.opengion.fukurou.util.XHTMLTag; 020import org.opengion.fukurou.util.ToString; // 6.1.1.0 (2015/01/17) 021import org.opengion.hayabusa.common.HybsSystem; 022import org.opengion.hayabusa.common.HybsSystemException; // 6.4.0.5 (2016/01/09) 023import org.opengion.hayabusa.db.DBColumn; 024import org.opengion.hayabusa.db.DBEditConfig; 025// import org.opengion.hayabusa.db.DBEditConfigManager; // 6.4.5.0 (2016/04/08) , 6.9.2.1 (2018/03/12) 廃止 026 027import static org.opengion.fukurou.util.StringUtil.nval; 028 029/** 030 * query.jsp での検索ボタンを表示します。 031 * 検索ボタン以外に、pageSize、maxRowCount、prevNext、timeView などの 032 * 項目も表示可能です。 033 * また、BODY部に登録した値は、table 要素として、td 部に追記されます。 034 * 035 * @og.formSample 036 * ●形式:<og:queryButton /> 037 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 038 * 039 * ●Tag定義: 040 * <og:queryButton 041 * command 【TAG】リクエストとして送信するコマンドを指定します(初期値:NEW) 042 * pageSize 【TAG】pageSize プルダウンメニューの初期値を指定します (初期値:HTML_PAGESIZE[=100]) 043 * maxRowCount 【TAG】maxRowCount プルダウンメニューの初期値を指定します (初期値:DB_MAX_ROW_COUNT[=1000]) 044 * type 【TAG】典型的なボタンの形状に設定します(初期値:null) 045 * scope 【TAG】リクエストとして送信するスコープを指定します(初期値:null) 046 * lbl 【TAG】ラベルリソースのラベルIDを指定します 047 * accesskey 【TAG】検索ボタンに使用するショートカットキー文字を指定します(初期値:F) 048 * usePrevNext 【TAG】進む/戻るのprev_next リンクを表示するかどうかを指定します(初期値:true) 049 * usePageSize 【TAG】pageSize 引数を使用するかどうかを指定します(初期値:true) 050 * useRowCount 【TAG】maxRowCount 引数を使用するかどうかを指定します(初期値:true) 051 * useTimeView 【TAG】処理時間を表示する TimeView を表示するかどうかを指定します 052 * (初期値:VIEW_USE_TIMEBAR[={@og.value SystemData#VIEW_USE_TIMEBAR}])。 053 * clearAccesskey 【TAG】クリアボタンに使用するショートカットキー文字を指定します(初期値:C) 054 * useDummy 【TAG】IE用ダミーinputを出力するかどうか 055 * useEditMenu 【TAG】編集プルダウンを出すかどうか(初期値:true) 056 * blockUIMsg 【TAG】検索中表示を画面上に表示するメッセージリソースIDを指定します (初期値:MSG0090(検索中です・・・)) 6.4.8.0 (2016/06/24) 057 * useClear 【TAG】JavaScriptによる初期化(クリア)ボタンを使用するかどうか[true/false/none]を指定します(初期値:true) 6.4.3.4 (2016/03/11) 058 * clearTarget 【TAG】useClear=true時のターゲット名(フレーム名)を指定します(初期値:QUERY) 5.9.21.1 (2017/06/16) 。 059 * clearHref 【TAG】useClear=true時の遷移先JSPを指定します(初期値:query.jsp) 5.9.21.1 (2017/06/16)。 060 * clearCommand 【TAG】useClear=true時のcommandを指定します(初期値:NEW) 5.9.21.1 (2017/06/16) 。 061 * clearKeys 【TAG】useClear=true時の遷移先に渡すキーをCSV形式で複数指定します 7.0.3.0 (2019/05/13) 062 * clearVals 【TAG】useClear=true時の遷移先に渡す値をCSV形式で複数指定します 7.0.3.0 (2019/05/13) 063 * title 【HTML】要素に対する補足的情報(title)を設定します 064 * style 【HTML】この要素に対して適用させるスタイルシート(style)を設定します 065 * disabled 【HTML】その部品に対して、選択や変更が出来ないように(disabled)指定します(サーバーに送信されない) 066 * tabindex 【HTML】タブの移動順(tabindex)を指定します(0 ~ 32767) 067 * clazz 【HTML】要素に対して class 属性を設定します 068 * onClick 【HTML】JavaScriptのイベント onClick を設定します(例:onClick="renew('query.jsp','QUERY');") 069 * onBlur 【HTML】JavaScriptのイベント onBlur を設定します(例:onBlur="this.value=value.toUpperCase();") 070 * onFocus 【HTML】JavaScriptのイベント onFocus を設定します 071 * ondblClick 【HTML】JavaScriptのイベント ondblClick を設定します 072 * onMouseDown 【HTML】JavaScriptのイベント onMouseDown を設定します 073 * onMouseUp 【HTML】JavaScriptのイベント onMouseUp を設定します 074 * onMouseMove 【HTML】JavaScriptのイベント onMouseMove を設定します 075 * onMouseOut 【HTML】JavaScriptのイベント onMouseOut を設定します 076 * onMouseOver 【HTML】JavaScriptのイベント onMouseOver を設定します 077 * autofocus 【HTML5】指定した入力欄にカーソルが当たって自動的にフォーカスされます。 078 * caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 079 * caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 080 * caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 081 * caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 082 * caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない) 083 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 084 * > ... Body ... 085 * </og:queryButton> 086 * 087 * 【廃止】6.4.3.4 (2016/03/11) つづり間違いを訂正。useCrear → useClear。 088 * // useCrear 【TAG】JavaScriptによる初期化(クリア)ボタンを使用するかどうか[true/false/none]を指定します(初期値:true) 089 * 090 * ●使用例 091 * <og:queryButton 092 * command = "NEW" NEW:通常の検索(初期値)/ENTRY:エントリ登録時 093 * type = "ENTRY" null:標準 , SELECT:検索ボタンのみ , ENTRY:登録ボタンのみ 094 * pageSize = "100" pageSize の初期値設定(初期値:HTML_PAGESIZE) 095 * maxRowCount = "100" maxRowCount の初期値設定(初期値:DB_MAX_ROW_COUNT) 096 * useClear = "true" true:JavaScriptによる初期化(クリア)/false:通常のresetボタン/none:表示しない 097 * scope = "request" null(初期値)/session:セッション登録/request:リクエスト登録 098 * lbl = "MSG0010" 検索ボタンに表示するメッセージID(初期値:MSG0010) 099 * accesskey = "F" ショートカットキー文字(初期値:F) 100 * usePrevNext = "true" Prev-Nextリンクを使用するかどうか(初期値:true) 101 * usePageSize = "true" pageSize 引数を使用するかどうか(初期値:true) 102 * useRowCount = "true" maxRowCount 引数を使用するかどうか(初期値:true) 103 * useTimeView = "true" timeView表示(実行時間表示)を使用するかどうか(初期値:VIEW_USE_TIMEBAR) 104 * useEditMenu = "true" 編集プルダウンを出すかどうか(初期値:true) 105 * /> 106 * 107 * 標準的な検索ボタン 108 * <og:queryButton /> 109 * 110 * 標準的な登録ボタン(command="NEW" で、query.jsp で使用するボタン) 111 * <og:queryButton type="ENTRY" /> 112 * 113 * BODY 部に追加要素を表示 114 * <og:queryButton > 115 * <td><jsp:directive.include file="/jsp/common/timeViewImage.jsp" /></td> 116 * </og:queryButton > 117 * 118 * @og.rev 4.0.0.0 (2005/01/31) 新規作成 119 * @og.rev 5.7.1.0 (2013/12/06) HTMLTagSupport を継承し、ボタンに付ける属性を増やします。 120 * @og.group 画面制御 121 * 122 * @version 4.0 123 * @author Kazuhiko Hasegawa 124 * @since JDK5.0, 125 */ 126public class QueryButtonTag extends HTMLTagSupport { 127 /** このプログラムのVERSION文字列を設定します。 {@value} */ 128 private static final String VERSION = "7.0.6.3 (2019/11/08)" ; 129 private static final long serialVersionUID = 706320191108L ; 130 131 // 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 132 private static final String COMMAND = 133// "<input type=\"hidden\" name=\"command\" value=\"NEW\" id=\"h_cmd\" />"; 134 "<input type=\"hidden\" name=\"command\" value=\"NEW\" id=\"h_cmd\" >"; // 7.0.1.0 (2018/10/15) 135 136 private static final String JSP = HybsSystem.sys( "JSP" ); 137 138 // 4.2.1.0 (2008/04/07) TDにIDを追加 139 // 4.3.1.0 (2008/09/03) 戻る・進むボタンをsubmitにより実行する。 140 // 6.0.2.4 (2014/10/17) img タグに、title 属性追記 141 // 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 142// private static final String PREV_NEXT = 143// "<td id=\"prev-next\"><a href=\"forward.jsp?command=FIRST\" target=\"RESULT\" >" + CR + 144// " <img src=\"" + JSP + "/image/FIRST.gif\" alt=\"FIRST\" title=\"FIRST\" border=\"0px\" " + CR + 145//// " onclick=\"return submitPrevNextForm('FIRST');\"/>" + CR + 146// " onclick=\"return submitPrevNextForm('FIRST');\">" + CR + // 7.0.1.0 (2018/10/15) 147// "</a>" + CR + 148// "<a href=\"forward.jsp?command=PREV\" target=\"RESULT\" >" + CR + 149// " <img src=\"" + JSP + "/image/PREV.gif\" alt=\"PREV\" title=\"PREV\" border=\"0px\" " + CR + 150//// " onclick=\"return submitPrevNextForm('PREV');\"/>" + CR + 151// " onclick=\"return submitPrevNextForm('PREV');\">" + CR + // 7.0.1.0 (2018/10/15) 152// "</a>" + CR + 153// "<a href=\"forward.jsp?command=NEXT\" target=\"RESULT\" >" + CR + 154// " <img src=\"" + JSP + "/image/NEXT.gif\" alt=\"NEXT\" title=\"NEXT\" border=\"0px\" " + CR + 155//// " onclick=\"return submitPrevNextForm('NEXT');\"/>" + CR + 156// " onclick=\"return submitPrevNextForm('NEXT');\">" + CR + // 7.0.1.0 (2018/10/15) 157// "</a>" + CR + 158// "<a href=\"forward.jsp?command=LAST\" target=\"RESULT\" >" + CR + 159// " <img src=\"" + JSP + "/image/LAST.gif\" alt=\"LAST\" title=\"LAST\" border=\"0px\" " + CR + 160//// " onclick=\"return submitPrevNextForm('LAST');\"/>" + CR + 161// " onclick=\"return submitPrevNextForm('LAST');\">" + CR + // 7.0.1.0 (2018/10/15) 162// "</a></td>" + CR ; 163 164 // 7.0.6.3 (2019/11/08) submitPrevNextForm で submit されるので、aタグは不要 165 private static final String PREV_NEXT = 166 "<td id=\"prev-next\">" + CR + 167 " <img src=\"" + JSP + "/image/FIRST.gif\" alt=\"FIRST\" title=\"FIRST\" border=\"0px\" " + CR + 168 " onclick=\"submitPrevNextForm('FIRST');\">" + CR + 169 " <img src=\"" + JSP + "/image/PREV.gif\" alt=\"PREV\" title=\"PREV\" border=\"0px\" " + CR + 170 " onclick=\"submitPrevNextForm('PREV');\">" + CR + 171 " <img src=\"" + JSP + "/image/NEXT.gif\" alt=\"NEXT\" title=\"NEXT\" border=\"0px\" " + CR + 172 " onclick=\"submitPrevNextForm('NEXT');\">" + CR + 173 " <img src=\"" + JSP + "/image/LAST.gif\" alt=\"LAST\" title=\"LAST\" border=\"0px\" " + CR + 174 " onclick=\"submitPrevNextForm('LAST');\">" + CR + 175 "</td>" + CR ; 176 177 private static final String TIME_VIEW = // 4.2.1.0 (2008/04/07) 直接色指定をやめる。 178 "<td><table cellspacing=\"0\" cellpadding=\"0\">" + CR + 179 "<tr>" + CR + 180 "<td width=\"20px\"> </td>" + CR + 181 "<td width=\"0px\" id=\"queryTbl\" title=\"\" ></td>" + CR + // #ff0000 182 "<td width=\"0px\" id=\"viewTbl\" title=\"\" ></td>" + CR + // #0000ff 183 "<td width=\"0px\" id=\"pageTbl\" title=\"\" ></td>" + CR + // #00ff00 184 "<td width=\"10px\"></td>" + CR + 185 "<td style=\"background-color:transparent;\" id=\"totalTbl\"></td>" + CR + 186 "</tr>" + CR + 187 "</table></td>" + CR ; 188 189 // 4.3.6.0 (2009/04/01) 件数をボタンで開閉させる 190 // 6.0.2.4 (2014/10/17) img タグに、title 属性追記 191 private static final String COUNT_SWITCH= 192 "<td>" + 193 " <img id=\"queryHide\" src=\"" + JSP + "/image/expand_r.png\" alt=\"pageSize\" title=\"pageSize\" border=\"0px\" "+ // 5.5.3.2 (2012/06/08) 194 " onClick=\"hideClass( event, this, 'hide', 'expand_r', 'shrink_r' )\"> " + CR + 195 "</td>"; 196 197 // 6.1.1.0 (2015/01/17) DUMMY_INPUT_TAG は、システム共通で固定値でよい。 198 // 5.6.1.0 (2013/02/01) display:noneのダミー出力(IEのEnterボタンのための、隠しinput出力) 199 private static final String DUMMY_INPUT_TAG = 200 new TagBuffer( "input" ) 201 .add( "name" , "HYBS_DUMMY_NPUT" ) 202 .add( "style" , "display:none;" ) 203 .makeTag() ; 204 205 // 5.7.6.2 (2014/05/16) IEのHTML5機能が有効か無効かの判定値を飛ばす、hidden タグを作成します。 206 // 判定方法は、HTML5で新規追加された canvas タグが、有効かどうか(内部メソッドの戻り値があるかどうか)で判定します。 207 // 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 208 private static final String IE_HTML5_CHECK = 209 "<script type=\"text/javascript\">" + CR 210 + " (function($){" + CR 211 + " var test = document.createElement('canvas');" + CR 212 + " $.support.canvas = !(!test || !test.getContext);" + CR 213 + " })(jQuery);" + CR 214// + " $('<input/>').attr('type','hidden').attr('name','" 215 + " $('<input>').attr('type','hidden').attr('name','" // 7.0.1.0 (2018/10/15) 216 + HybsSystem.IE_HTML5_KEY 217 + "').val( $.support.canvas ).appendTo('form');" + CR 218 + "</script>" + CR ; 219 220 private String command = "NEW"; 221 private String pageSize ; 222 private String maxRowCount ; 223 private String accesskey = "F"; 224 private String useClear = "true"; // 6.4.3.4 (2016/03/11) つづり間違いを訂正。useCrear → useClear 225 226 private String type ; // null:標準 , SELECT:検索ボタンのみ , ENTRY:登録ボタンのみ 227 private String scope ; 228 private boolean usePrevNext = true; 229 private boolean usePageSize = true; 230 private boolean useRowCount = true; 231 private boolean useTimeView = HybsSystem.sysBool( "VIEW_USE_TIMEBAR" ); // 6.3.6.0 (2015/08/16) 232 private String body ; 233 private String clearAcskey = "C"; 234 // 6.9.5.0 (2018/04/23) USE_DUMMY_INPUT 廃止(false固定) 235// private boolean useDummy = HybsSystem.sysBool( "USE_DUMMY_INPUT" ); // 5.6.1.0 (2013/02/01) 236 private boolean useDummy ; // 6.9.5.0 (2018/04/23) USE_DUMMY_INPUT 廃止(false固定) 237 private boolean useEditMenu = true; // 5.7.5.0 (2014/04/04) 編集プルダウンを出すかどうか(初期値:true)。 238 private String blockUIMsg = "MSG0090"; // 6.4.8.0 (2016/06/24) 検索中です・・・ 239 240 private String clearTarget = "QUERY"; // 5.9.21.1 (2017/06/16) クリアボタンのターゲット 241 private String clearHref = "query.jsp"; // 5.9.21.1 (2017/06/16) クリアボタンの遷移アドレス 242 private String clearCommand = "NEW"; // 5.9.21.1 (2017/06/16) クリア時のコマンド 243 private String[] clearKeys ; // 7.0.3.0 (2019/05/13) クリア時の遷移先に渡すキー 244 private String[] clearVals ; // 7.0.3.0 (2019/05/13) クリア時の遷移先に渡す値 245 246 /** 247 * デフォルトコンストラクター 248 * 249 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 250 */ 251 public QueryButtonTag() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 252 253 /** 254 * Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。 255 * 256 * @og.rev 6.3.4.0 (2015/08/01) caseKey,caseVal,caseNN,caseNull,caseIf 属性対応 257 * 258 * @return 後続処理の指示( EVAL_BODY_BUFFERED ) 259 */ 260 @Override 261 public int doStartTag() { 262 // 6.4.1.1 (2016/01/16) PMD refactoring. A method should have only one exit point, and that should be the last statement in the method 263 // 反転注意 264 return useTag() ? EVAL_BODY_BUFFERED : SKIP_BODY ; 265 } 266 267 /** 268 * Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。 269 * 270 * @og.rev 2.2.0.0 (2002/12/17) 中国語(国際化)対応 エンコードの取得方法変更 271 * @og.rev 3.0.0.0 (2002/12/25) StringUtil#changeString 廃止 272 * @og.rev 3.1.1.0 (2003/03/28) ボディの内容を取得する処理を、CommonTagSupport で行う。 273 * 274 * @return 後続処理の指示(SKIP_BODY) 275 */ 276 @Override 277 public int doAfterBody() { 278 body = nval( getBodyString(),body ); 279 280 return SKIP_BODY ; 281 } 282 283 /** 284 * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。 285 * 286 * @og.rev 5.3.6.0 (2011/06/01) 集計、合計などのEdit機能に対応します。 287 * @og.rev 5.6.5.1 (2013/06/14) debugプルダウンの追加。ついでに、PageSize と MaxRowCount の 表示条件を、整備します。 288 * @og.rev 5.6.9.4 (2013/10/31) editNameの初期値を外部から与えられるようにする 289 * @og.rev 5.7.1.0 (2013/12/06) HTMLTagSupportを継承する為、メソッドを、getSubmit() ⇒ makeTag() に変更 290 * @og.rev 5.7.1.2 (2013/12/20) USE_DEFAULT_EDITNAMEでeditNameの初期値変更 291 * @og.rev 5.7.5.0 (2014/04/04) useEditMenu 追加 292 * @og.rev 5.7.6.2 (2014/05/16) IEのHTML5機能が有効か無効かの判定値を飛ばす、hidden タグを作成します。 293 * @og.rev 6.3.4.0 (2015/08/01) caseKey,caseVal,caseNN,caseNull,caseIf 属性対応 294 * @og.rev 6.4.5.0 (2016/04/08) UserInfo のEditConfig関連機能を、DBEditConfigManagerに移植します。 295 * @og.rev 5.9.12.0 (2016/09/02) tableのframe属性を削除する 296 * @og.rev 6.9.2.1 (2018/03/12) DBEditConfigManagerを直接取り出す処理を、廃止します。 297 * 298 * @return 後続処理の指示 299 */ 300 @Override 301 public int doEndTag() { 302 debugPrint(); // 4.0.0 (2005/02/28) 303 if( !useTag() ) { return EVAL_PAGE ; } // 6.3.4.0 (2015/08/01) 304 305 final StringBuilder buf = new StringBuilder( BUFFER_MIDDLE ) 306 .append( getHiddenScope() ).append( CR ) 307 .append( "<table border=\"0\" summary=\"submit\" ><tr>" ) // 5.9.12.0 (2016/090/02) 308 .append( CR ) 309 .append( "<td>" ).append( makeTag() ).append( "</td>" ).append( CR ) // 5.7.1.0 (2013/12/06) 310 .append( "<td>" ).append( getReset() ).append( "</td>" ).append( CR ) 311 .append( "<td>" ).append( getCommand() ).append( "</td>" ).append( CR ) 312 .append( "<td>" ).append( getGamenId() ).append( "</td>" ).append( CR ); 313 if( usePrevNext ) { buf.append( PREV_NEXT ).append( CR ); } 314 buf.append( "<td><span id=\"query-button-append\"></span></td>").append( CR ); //4 3.6.0 (2009/04/01) 315 // if( usePageSize ) { buf.append( getPageSize() ).append( CR ); } 316 // if( useRowCount ) { buf.append( getMaxRowCount()).append( CR ); } 317 if( body != null ) { 318 buf.append( "<td>" ).append( body ).append( "</td>" ).append( CR ); 319 } 320 321 // 5.7.5.0 (2014/04/04) useEditMenu 追加。trueで、編集プルダウンを出力します。 322 if( useEditMenu ) { 323 // 6.9.2.1 (2018/03/12) DBEditConfigManagerを直接取り出す処理を、廃止します。 324// final DBEditConfigManager dbConfMgr = getUser().getEditConfigManager(); // 6.4.5.0 (2016/04/08) 325 326 // 5.3.6.0 (2011/06/01) 集計、合計などのEdit機能に対応します。 327 final String guikey = getGUIInfoAttri( "KEY" ); 328 // 6.1.0.0 (2014/12/26) findBugs: null ではなく長さが0の配列を返す。 329 // 6.9.2.1 (2018/03/12) DBEditConfigManagerを直接取り出す処理を、廃止します。 330// final DBEditConfig[] configs = dbConfMgr.getEditConfigs( guikey ); 331 final DBEditConfig[] configs = getUser().getEditConfigs( guikey ); 332 if( configs.length > 0 ) { 333 // String selEditName = getUser().getSelectedEdit( getGUIInfoAttri( "KEY" ) ); 334 // String selEditName = nval( getRequestValue( "editName" ) , getUser().getSelectedEdit( getGUIInfoAttri( "KEY" ) )); // 5.6.9.4 (2013/10/31) 335 String selEditName ; // 5.7.1.2 (2013/12/20) 336 if( "FALSE".equalsIgnoreCase( sys( "USE_DEFAULT_EDITNAME" ) ) ){ 337 selEditName = getRequestValue( "editName" ); 338 } 339 else{ 340 selEditName = nval( getRequestValue( "editName" ) , getUser().getSelectedEdit( guikey )); // 5.6.9.4 (2013/10/31) 341 // selEditName = nval( getRequestValue( "editName" ) , dbConfMgr.getSelectedEdit( guikey ) ); // 6.4.5.0 (2016/04/08) 342 } 343 buf.append( getEditSelect( configs, selEditName ) ).append( CR ); 344 } 345 } 346 347 // 5.6.5.1 (2013/06/14) debugプルダウンの追加。ついでに、PageSize と MaxRowCount の 表示条件を、整備します。 348 if( usePageSize || useRowCount) { 349 buf.append( COUNT_SWITCH ).append( CR ); 350 if( usePageSize ) { buf.append( getPageSize() ).append( CR ); } 351 if( useRowCount ) { buf.append( getMaxRowCount()).append( CR ); } 352 // デバッグは、ユーザーのロールが、root の場合のみ表示するようにします。 353 if( "root".equalsIgnoreCase( getUser().getRoles() ) ) { 354 buf.append( getDebugClm() ).append( CR ); // 5.6.5.1 (2013/06/14) debugプルダウンの追加 355 } 356 } 357 358 if( useTimeView ) { buf.append( TIME_VIEW ).append( CR ); } 359 360 buf.append( "</tr></table>" ).append( CR ); 361 362 // 5.7.6.2 (2014/05/16) IEのHTML5機能が有効か無効かの判定値を飛ばす、hidden タグを作成します。 363 // IE_HTML5_KEY をキーとする設定値がなければ、まだ未設定なので、hidden タグを作成します。 364 if( getSessionAttribute( HybsSystem.IE_HTML5_KEY ) == null ) { 365 buf.append( IE_HTML5_CHECK ); 366 } 367 368 jspPrint( buf.toString() ); 369 if( useDummy ){ jspPrint( DUMMY_INPUT_TAG ); } // 6.1.1.0 (2015/01/17) 固定値でよい 370 371 return EVAL_PAGE ; // ページの残りを評価する。 372 } 373 374 /** 375 * タグリブオブジェクトをリリースします。 376 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 377 * 378 * @og.rev 5.6.1.0 (2013/02/01) useDummy 追加 379 * @og.rev 5.7.5.0 (2014/04/04) useEditMenu 追加 380 * @og.rev 6.3.6.0 (2015/08/16) useTimeView の初期値を、VIEW_USE_TIMEBAR にする。 381 * @og.rev 6.4.0.5 (2016/01/09) true/false に加えて、none:表示しない を追加。 382 * @og.rev 6.4.8.0 (2016/06/24) blockUIMsg を追加。 検索中です・・・ 383 * @og.rev 5.9.21.1 (2017/06/16) clearTarget , clearHref , clearCommand追加 384 * @og.rev 6.9.5.0 (2018/04/23) USE_DUMMY_INPUT 廃止(false固定) 385 * @og.rev 7.0.3.0 (2019/05/13) clearKeys , clearVals属性を追加 386 */ 387 @Override 388 protected void release2() { 389 super.release2(); 390 command = "NEW"; 391 pageSize = null; 392 maxRowCount = null; 393 accesskey = "F"; 394 useClear = "true"; // 6.4.0.5 (2016/01/09) true/false に加えて、none:表示しない を追加。 395 scope = null; 396 usePrevNext = true; 397 usePageSize = true; 398 useRowCount = true; 399 useTimeView = HybsSystem.sysBool( "VIEW_USE_TIMEBAR" ); // 6.3.6.0 (2015/08/16) 400 clearAcskey = "C"; // 5.3.5.0 (2011/05/01) クリアボタンアクセスキー対応 401// useDummy = HybsSystem.sysBool( "USE_DUMMY_INPUT" ); // 5.6.1.0 (2013/02/01) 402 useDummy = false; // 6.9.5.0 (2018/04/23) USE_DUMMY_INPUT 廃止(false固定) 403 useEditMenu = true; // 5.7.5.0 (2014/04/04) 編集プルダウンを出すかどうか(初期値:true)。 404 blockUIMsg = "MSG0090"; // 6.4.8.0 (2016/06/24) 検索中です・・・ 405 clearTarget = "QUERY"; // 5.9.21.1 (2017/06/16) クリアボタンのターゲット 406 clearHref = "query.jsp"; // 5.9.21.1 (2017/06/16) 407 clearCommand = "NEW"; // 5.9.21.1 (2017/06/16) 408 clearKeys = null; // 7.0.3.0 (2019/05/13) クリア時の遷移先に渡すキー 409 clearVals = null; // 7.0.3.0 (2019/05/13) クリア時の遷移先に渡す値 410 } 411 412 /** 413 * サブミットボタンを作成します。 414 * 415 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対応 416 * @og.rev 5.5.7.1 (2012/10/05) 不要な括弧出力を削除 417 * @og.rev 5.6.9.3 (2013/10/25) IDを出力する 418 * @og.rev 5.7.1.0 (2013/12/06) HTMLTagSupportを継承する為、メソッドを、getSubmit() ⇒ makeTag() に変更 419 * @og.rev 6.2.2.0 (2015/03/27) 互換モード/ネイティブモード対応。検索ボタンをbutton→input に変更 420 * @og.rev 6.4.8.0 (2016/06/24) blockUIMsg を追加。 検索中です・・・ 421 * 422 * @return サブミットボタン 423 * @og.rtnNotNull 424 */ 425 @Override 426 protected String makeTag() { 427 String msglbl = getLongLabel(); // 4.0.0 (2005/01/31) 428 if( msglbl == null ) { 429 if( "ENTRY".equalsIgnoreCase( type ) ) { 430 msglbl = getLabel( "ENTRY" ); 431 } 432 else { 433 msglbl = getLabel( "QUERY" ); 434 } 435 } 436 437 // 5.7.1.0 (2013/12/06) XHTMLTag を使用することで、各種属性を追加できるようにします。 438 if( accesskey != null ) { 439 set( "accesskey" , accesskey ); 440 msglbl = msglbl + "(" + accesskey + ")" ; 441 } 442 443 // 6.4.8.0 (2016/06/24) blockUIMsg を追加。 検索中です・・・ 444 if( blockUIMsg != null && !blockUIMsg.isEmpty() ) { 445 final String uiMsg = getResource().getLabel( blockUIMsg ); 446 set( "alt" , uiMsg ); 447 } 448 449 set( "type" , "submit" ); 450 set( "id" , "queryButtonSubmit" ); 451 // 6.2.2.0 (2015/03/27) 互換モード/ネイティブモード対応。検索ボタンをbutton→input に変更 452 set( "value", msglbl ); // 6.2.2.0 (2015/03/27) 453 454 return XHTMLTag.input( getAttributes() ); // 6.2.2.0 (2015/03/27) 455 } 456 457 /** 458 * リセットボタンを作成します。 459 * 460 * @og.rev 4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel ) 461 * @og.rev 5.0.2.0 (2009/11/01) 戻るボタンが出力されている状態で、クリアボタンを押すと、戻るボタンが消える不具合を修正 462 * @og.rev 5.3.5.0 (2011/05/01) クリアボタンにもアクセスキーが付加できるように対応 463 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対応 464 * @og.rev 6.2.2.0 (2015/03/27) 互換モード/ネイティブモード対応。クリアボタンをbutton→input に変更 465 * @og.rev 6.4.0.5 (2016/01/09) true/false に加えて、none:表示しない を追加。 466 * @og.rev 5.9.21.1 (2017/06/16) クリアボタンのターゲットとページを変更可能にする 467 * @og.rev 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 468 * @og.rev 7.0.3.0 (2019/05/13) clearKeys , clearVals属性を追加 469 * 470 * @return リセットボタン 471 * @og.rtnNotNull 472 */ 473 private String getReset() { 474 final String rtn ; 475 476 // 6.4.0.5 (2016/01/09) true/false に加えて、none:表示しない を追加。 477 if( "true".equalsIgnoreCase( useClear ) ) { 478 final String urlEnc = XHTMLTag.urlEncode( clearKeys,clearVals ); // 7.0.3.0 (2019/05/13) 479 480 final char ch = clearHref.indexOf( '?' ) < 0 ? '?' : '&' ; // 連結文字列 481 482 rtn = "<input type=\"button\" onClick=\"window.open('" + JSP + '/' + getGUIInfoAttri( "ADDRESS" ) + 483 '/' + clearHref + ch + "GAMENID=" + getGUIInfoAttri( "KEY" ) + 484 ( urlEnc.isEmpty() ? "" : "&" + urlEnc ) + // 7.0.3.0 (2019/05/13) 485 "&command=" + clearCommand + "','" + clearTarget +"')\" " + // 5.9.21.1 (2017/06/16) 486 ( clearAcskey == null ? "" : "accesskey=\"" + clearAcskey + '"' ) + 487 " value=\"" + getResource().getLabel( "MSG0011" ) + 488 ( clearAcskey == null ? "" : '(' + clearAcskey + ')' ) + 489// "\" />" ; 490 "\" >" ; // 7.0.1.0 (2018/10/15) 491 } 492 else if( "false".equalsIgnoreCase( useClear ) ) { 493 rtn = "<input type=\"reset\" " + 494 ( clearAcskey == null ? "" : "accesskey=\"" + clearAcskey + '"' ) + 495 " value=\"" + getResource().getLabel( "MSG0011" ) + 496 ( clearAcskey == null ? "" : '(' + clearAcskey + ')' ) + 497// "\" />" ; 498 "\" >" ; // 7.0.1.0 (2018/10/15) 499 } 500 else { // "none" を想定 501 rtn = "" ; // none:表示しない 502 } 503 504 return rtn; 505 } 506 507 /** 508 * コマンドを出力する hidden を作成します。 509 * 510 * @og.rev 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 511 * 512 * @return コマンドを出力する hidden 513 * @og.rtnNotNull 514 */ 515 private String getCommand() { 516 // 6.1.1.0 (2015/01/17) refactoring. ロジックを見直します。 517 518 return "NEW".equals( command ) 519 ? COMMAND 520 : "<input type=\"hidden\" name=\"command\" value=\"" + 521// command + "\" id=\"h_cmd\" />" ; 522 command + "\" id=\"h_cmd\" >" ; // 7.0.1.0 (2018/10/15) 523 } 524 525 /** 526 * スコープを出力する hidden を作成します。 527 * 528 * @og.rev 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 529 * 530 * @return スコープを出力する hidden 531 * @og.rtnNotNull 532 */ 533 private String getHiddenScope() { 534 // 6.1.1.0 (2015/01/17) refactoring. ロジックを見直します。 535 536 return scope == null 537 ? "" 538 : "<input type=\"hidden\" name=\"scope\" value=\"" + 539// scope + "\" />" ; 540 scope + "\" >" ; // 7.0.1.0 (2018/10/15) 541 } 542 543 /** 544 * 画面IDを出力する hidden を作成します。 545 * 546 * @og.rev 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"/>" 止めを、">" に変更します)。 547 * 548 * @return 画面IDを出力する hidden 549 * @og.rtnNotNull 550 */ 551 private String getGamenId() { 552 // 6.1.1.0 (2015/01/17) refactoring. ロジックを見直します。 553 return "<input type=\"hidden\" name=\"GAMENID\" value=\"" + 554// getGUIInfoAttri("KEY") + "\" />"; 555 getGUIInfoAttri("KEY") + "\" >"; // 7.0.1.0 (2018/10/15) 556 } 557 558 /** 559 * ページサイズプルダウンメニューを作成します。 560 * 561 * @og.rev 4.3.6.0 (2008/04/01) idとclassの変更 562 * 563 * @return ページサイズプルダウンメニュー 564 * @og.rtnNotNull 565 */ 566 private String getPageSize() { 567 if( pageSize == null ) { 568 final String PAGESIZE = sys( "HTML_PAGESIZE" ); 569 pageSize = nval( getRequestValue( "pageSize" ),PAGESIZE ) ; 570 } 571 572 final DBColumn column = getDBColumn( "pageSize" ); 573 final String tag = column.getEditorValue( pageSize ); 574 575 // return ( "<td id=\"label\">" + 576 return "<td class=\"label pageSize hide\">" // 4.3.6.0 (2008/04/01) class出力 577 + column.getLongLabel() 578 + ":</td><td class=\"pageSize hide\">" + tag + "</td>" ; 579 } 580 581 /** 582 * 検索時の最大検索数のプルダウンメニューを作成します。 583 * 584 * @og.rev 4.3.6.0 (2008/04/01) idとclassの変更 585 * 586 * @return 最大検索数のプルダウンメニュー 587 * @og.rtnNotNull 588 */ 589 private String getMaxRowCount() { 590 if( maxRowCount == null ) { 591 final String ROW_COUNT = sys( "DB_MAX_ROW_COUNT" ); 592 maxRowCount = nval( getRequestValue( "maxRowCount" ), ROW_COUNT ) ; 593 } 594 595 final DBColumn column = getDBColumn( "maxRowCount" ); 596 final String tag = column.getEditorValue( maxRowCount ); 597 598 // return ( "<td id=\"label\">" + 599 return "<td class=\"label maxRowCount hide\">" // 4.3.6.0 (2008/04/01) class出力 600 + column.getLongLabel() 601 + ":</td><td class=\"maxRowCount hide\">" + tag + "</td>" ; 602 } 603 604 /** 605 * debugプルダウンメニューを作成します。 606 * 607 * @og.rev 5.6.5.1 (2013/06/14) 新規追加 608 * 609 * @return debugプルダウンメニュー 610 * @og.rtnNotNull 611 */ 612 private String getDebugClm() { 613 final DBColumn column = getDBColumn( "debug" ); 614 final String tag = column.getEditorValue( "false" ); 615 616 return "<td class=\"label debug hide\">" 617 + column.getLongLabel() 618 + ":</td><td class=\"debug hide\">" + tag + "</td>" ; 619 } 620 621 /** 622 * 編集名一覧のプルダウンメニューを作成します。 623 * 624 * @og.rev 5.3.6.0 (2011/06/01) 新規追加 625 * @og.rev 5.9.1.2 (2015/10/23) 自己終了タグ修正 626 * 627 * @param configs 編集名一覧(配列) 628 * @param selEditName 選択中の編集名 629 * 630 * @return 編集名一覧のプルダウン 631 * @og.rtnNotNull 632 */ 633 private String getEditSelect( final DBEditConfig[] configs, final String selEditName ) { 634 final DBColumn column = getDBColumn( "editName" ); 635 636 final StringBuilder buf = new StringBuilder( BUFFER_MIDDLE ) 637 .append( "<td class=\"label editName\">" ) 638 .append( column.getLongLabel() ) 639 .append( ":</td><td class=\"editName\">" ) 640 .append( "<select name=\"editName\">" ) 641 .append( "<option><!-- --></option>" ); // 5.9.1.2 (2015/10/23) 642 643 for( final DBEditConfig config : configs ) { 644 final String name = config.getEditName(); 645 if( name != null && name.length() > 0 ) { 646 buf.append( "<option value=\"" ).append( name ).append( '"' ); // 6.0.2.5 (2014/10/31) char を append する。 647 if( config.isCommon() ) { 648 buf.append( " class=\"commonEdit\"" ); 649 } 650 if( name.equals( selEditName ) ) { 651 buf.append( " selected" ); 652 } 653 buf.append( '>' ).append( name ).append( "</option>" ); // 6.0.2.5 (2014/10/31) char を append する。 654 } 655 } 656 buf.append( "</select></td>" ); 657 return buf.toString(); 658 } 659 660 /** 661 * 【TAG】リクエストとして送信するコマンドを指定します(初期値:NEW)。 662 * 663 * @og.tag 664 * NEW:通常の検索(初期値)/ENTRY:エントリ登録時 665 * 666 * @param cmd 送信するコマンド 667 */ 668 public void setCommand( final String cmd ) { 669 command = nval( getRequestParameter( cmd ),command ); 670 } 671 672 /** 673 * 【TAG】JavaScriptによる初期化(クリア)ボタンを使用するかどうか[true/false/none]を指定します(初期値:true)。 674 * 675 * @og.tag 676 * 通常の初期化(クリア)ボタンでは、HTMLが作成された状態に戻すだけです。 677 * 例えば、引数付きで設定された場合、その引数が設定されている状態へ戻します。 678 * このJavaScriptによる初期化ボタンの場合(trueの場合)は、JavaScriptにより 679 * INIT状態でもう一度QUERYフレームを呼び出しますので、指定された引数もクリアされます。 680 * none を指定すると、クリアボタンを表示しません。 681 * 682 * true: JavaScriptによる初期化ボタン(すべての引数がクリアされます) 683 * false: HTMLによる RESET処理(type="reset" のinputタグが出力されます。) 684 * none: クリアボタンを表示しません。 (※ 6.4.0.5 (2016/01/09) 以降 ) 685 * 686 * 初期値は、true:JavaScriptによる初期化です。 687 * 688 * @og.rev 6.4.0.5 (2016/01/09) true/false に加えて、none:表示しない を追加。 689 * @og.rev 6.4.3.4 (2016/03/11) つづり間違いを訂正。useCrear → useClear。 690 * 691 * @param flag JavaScriptによる初期化ボタン使用可否 [true:JavaScript初期化ボタン/false:通常のresetボタン] 692 */ 693 public void setUseClear( final String flag ) { 694 useClear = nval( getRequestParameter( flag ),useClear ); 695 696 // 6.4.0.5 (2016/01/09) true/false に加えて、none:表示しない を追加。 697 if( useClear != null && 698 !"true".equalsIgnoreCase( useClear ) && 699 !"false".equalsIgnoreCase( useClear ) && 700 !"none".equalsIgnoreCase( useClear ) ) { 701 final String errMsg = "useClear は、[true:全クリア/false:リセット/none:表示しない] から選んでください。" 702 + "useClear=[" + flag + "]" + CR ; 703 throw new HybsSystemException( errMsg ); 704 } 705 } 706 707// /** 708// * 【廃止】JavaScriptによる初期化(クリア)ボタンを使用するかどうか[true/false/none]を指定します(初期値:true)。 709// * 710// * @og.tag 711// * 通常の初期化(クリア)ボタンでは、HTMLが作成された状態に戻すだけです。 712// * 例えば、引数付きで設定された場合、その引数が設定されている状態へ戻します。 713// * このJavaScriptによる初期化ボタンの場合(trueの場合)は、JavaScriptにより 714// * INIT状態でもう一度QUERYフレームを呼び出しますので、指定された引数もクリアされます。 715// * none を指定すると、クリアボタンを表示しません。 716// * 717// * true: JavaScriptによる初期化ボタン(すべての引数がクリアされます) 718// * false: HTMLによる RESET処理(type="reset" のinputタグが出力されます。) 719// * none: クリアボタンを表示しません。 (※ 6.4.0.5 (2016/01/09) 以降 ) 720// * 721// * 初期値は、true:JavaScriptによる初期化です。 722// * 723// * @og.rev 6.4.0.5 (2016/01/09) true/false に加えて、none:表示しない を追加。 724// * @og.rev 6.4.3.4 (2016/03/11) つづり間違いを訂正。useCrear → useClear。 725// * 726// * @param flag JavaScriptによる初期化ボタン使用可否 [true:JavaScript初期化ボタン/false:通常のresetボタン] 727// */ 728// public void setUseCrear( final String flag ) { 729// setUseClear( flag ); 730// } 731 732 /** 733 * 【TAG】useClear時のターゲットを指定します(初期値=QUERY)。 734 * 735 * @og.tag 736 * useClearをtrueにしている場合、window.openを利用した初期化を行います。 737 * この際に検索部分の名称がQUERY以外の場合にこの属性で指定します。 738 * 初期値はQUERYです。 739 * 740 * @og.rev 5.9.21.1 (2017/06/16) 新規追加 741 * 742 * @param tgt ターゲット名 743 */ 744 public void setClearTarget( final String tgt ) { 745 clearTarget = nval( getRequestParameter( tgt ), clearTarget ); 746 } 747 748 /** 749 * 【TAG】useClear時の遷移先を指定します(初期値=query.jsp)。 750 * 751 * @og.tag 752 * useClearをtrueにしている場合、window.openを利用した初期化を行います。 753 * この際に検索画面のURLがquery.jspでない場合にこの属性で指定します。 754 * また、query.jsp でも、特定の値を再設定したい場合、query.jsp?KEY=VALUE という 755 * 記述が可能です。指定のキーだけ、クリアしないということが出来るようになります。 756 * 初期値はquery.jspです。 757 * 758 * @og.rev 5.9.21.1 (2017/06/16) 新規追加 759 * 760 * @param page 遷移先 761 */ 762 public void setClearHref( final String page ) { 763 clearHref = nval( getRequestParameter( page ), clearHref ); 764 } 765 766 /** 767 * 【TAG】useClear時のcommandを指定します(初期値=NEW)。 768 * 769 * @og.tag 770 * useClearをtrueにしている場合、window.openを利用した初期化を行います。 771 * この際に読み込む画面に対してcommand=NEW以外を送信したい場合にこの属性で指定します。 772 * 初期値はNEWです。 773 * 774 * @og.rev 5.9.21.1 (2017/06/16) 新規追加 775 * 776 * @param cmd コマンド 777 */ 778 public void setClearCommand( final String cmd ) { 779 clearCommand = nval( getRequestParameter( cmd ), clearCommand ); 780 } 781 782 /** 783 * 【TAG】useClear=true時の遷移先に渡すキーをCSV形式で複数指定します。 784 * 785 * @og.tag 遷移先に渡すキーを指定します。 786 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 787 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 788 * 789 * @og.rev 7.0.3.0 (2019/05/13) clearKeys , clearVals属性を追加 790 * 791 * @param key キー(CSV形式) 792 */ 793 public void setClearKeys( final String key ) { 794 clearKeys = getCSVParameter( key ); 795 } 796 797 /** 798 * 【TAG】useClear=true時の遷移先に渡す値をCSV形式で複数指定します。 799 * 800 * @og.tag 遷移先に渡す値を指定します。 801 * 分解方法は、CSV変数を先に分解してから、getRequestParameter で値を取得します。 802 * こうしないとデータ自身にカンマを持っている場合に分解をミスる為です。 803 * keys,vals を使用すると、URLエンコードされます。 804 * 805 * @og.rev 7.0.3.0 (2019/05/13) clearKeys , clearVals属性を追加 806 * 807 * @param val 値(CSV形式) 808 */ 809 public void setClearVals( final String val ) { 810 clearVals = getCSVParameter( val ); 811 } 812 813 /** 814 * 【TAG】典型的なボタンの形状に設定します(初期値:null)。 815 * 816 * @og.tag 817 * クエリーボタンでは、検索ボタン以外に、pageSize、maxRowCount、 818 * prevNext、timeView などの項目も表示可能です。 819 * これらを、個別に設定可能ですが、通常使用するタイプとして、3タイプを 820 * 用意します。これは、設定状態の初期値といえます。 821 * null :通常の検索ボタンで、フル装備の指定です。 822 * SELECT:1件のみ検索するようなケースで使用します。 823 * 検索ボタンとクリアボタンのみを表示します。 824 * ENTRY :いきなり登録するようなケースで使用します。 825 * 登録ボタンとクリアボタンのみを表示します。(command="NEW" です。) 826 * 827 * @og.rev 6.4.0.5 (2016/01/09) accesskey="" が効かなかったので、対応。 828 * 829 * @param tp タイプ指定 [null/SELECT/ENTRY] 830 */ 831 public void setType( final String tp ) { 832 type = nval( getRequestParameter( tp ),type ); 833 834 // 6.4.0.5 (2016/01/09) accesskey="" が効かなかったので、対応。 835 // accesskey の初期値が "F" なので、ENTRYの場合のみ、"F" のときは "W" に変更します。 836 837 if( "SELECT".equalsIgnoreCase( type ) ) { 838 usePrevNext = false; 839 usePageSize = false; 840 useRowCount = false; 841 useTimeView = false; 842 } 843 else if( "ENTRY".equalsIgnoreCase( type ) ) { 844 if( "F".equals( accesskey ) ) { accesskey = "W"; } // ENTRYの場合は、"F" の場合のみ、"W" に置き換えます。 845 usePrevNext = false; 846 usePageSize = false; 847 useRowCount = false; 848 useTimeView = false; 849 } 850 } 851 852 /** 853 * 【TAG】リクエストとして送信するスコープを指定します(初期値:null)。 854 * 855 * @og.tag 856 * リクエスト時に、付与する引数情報のうちの、スコープを指定します。 857 * これは、検索専用画面の場合は、scope="request" にする事で、メモリの 858 * 無駄な確保を行わずに、検索結果を表示できます。 859 * ただし、その結果に対して、NEXT-PREV や、ヘッダーソートリンクなどの 860 * 機能が使えなくなります。 861 * 通常は、何も指定しない状態(null)で、RESULT画面の設定に任せるのが良いでしょう。 862 * 初期値は、null = session(セッション登録) です。 863 * 864 * @param scp スコープ [session:セッション登録/request:リクエスト登録] 865 */ 866 @Override 867 public void setScope( final String scp ) { 868 scope = nval( getRequestParameter( scp ),scope ); 869 } 870 871 /** 872 * 【TAG】検索ボタンに使用するショートカットキー文字を指定します(初期値:F)。 873 * 874 * @og.tag 875 * ボタンを、Alt-XX で実行できるようにするショートカットキーを設定します。 876 * 標準では、検索ボタンは、"F" に設定していますので、Alt-F となります。 877 * ゼロ文字列を指定すると、ショートカットキーなしに設定できます。 878 * 初期値は、Find の "F" です。 879 * 880 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対応 881 * @og.rev 5.6.0.3 (2012/01/24) getRequestParameter を何度も呼んでいるので修正。 882 * 883 * @param accsKey ショートカットキー文字(初期値:F) 884 */ 885 @Override 886 public void setAccesskey( final String accsKey ) { 887 final String val = getRequestParameter( accsKey ); 888 if( val == null || val.isEmpty() ) { 889 accesskey = null; 890 } 891 else { 892 accesskey = val; // 5.6.0.3 (2012/01/24) 893 } 894 } 895 896 /** 897 * 【TAG】クリアボタンに使用するショートカットキー文字を指定します(初期値:C)。 898 * 899 * @og.tag 900 * ボタンを、Alt-XX で実行できるようにするショートカットキーを設定します。 901 * 標準では、検索ボタンは、"C" に設定していますので、Alt-C となります。 902 * ゼロ文字列を指定すると、ショートカットキーなしに設定できます。 903 * 初期値は、Clear の "C" です。 904 * 905 * @og.rev 5.3.6.0 (2011/06/01) accessKeyを削除できるように対応 906 * @og.rev 5.6.0.3 (2012/01/24) getRequestParameter を何度も呼んでいるので修正。 907 * 908 * @param accsKey クリアボタンのショートカットキー文字(初期値:C) 909 */ 910 public void setClearAccesskey( final String accsKey ) { 911 final String val = getRequestParameter( accsKey ); 912 if( val == null || val.isEmpty() ) { 913 clearAcskey = null; 914 } 915 else { 916 clearAcskey = val; // 5.6.0.3 (2012/01/24) 917 } 918 } 919 920 /** 921 * 【TAG】進む/戻るのprev_next リンクを表示するかどうかを指定します(初期値:true)。 922 * 923 * @og.tag 924 * 進む/戻るリンクは、RESULT画面にコマンド (FIRST,PREV,NEXT,LAST) という 925 * コマンドを送る事で実現している画像リンクです。 926 * PREV_NEXT が存在しない画面では、消去しておく必要があります。 927 * 初期値は、true(表示する)です。 928 * 929 * @param flag prev_nextリンク表示 [true:する/false:しない] 930 */ 931 public void setUsePrevNext( final String flag ) { 932 usePrevNext = nval( getRequestParameter( flag ),usePrevNext ); 933 } 934 935 /** 936 * 【TAG】pageSize 引数を使用するかどうかを指定します(初期値:true)。 937 * 938 * @og.tag 939 * pageSize 引数は、RESULT画面のviewタグで使用する 一回の表示に 940 * 何件のデータを表示させるかを指定する引数です。 941 * この件数が多いと、多くのデータを見ることが出来ますが、その分表示が 942 * 遅くなります。逆に、少ないと、PREV_NEXT を多用することになり、 943 * 目的の行を探し出しにくくなります。 944 * pageSize の値は、pageSizeパラメータで画面単位に指定するか、システム 945 * パラメータの HTML_PAGESIZE でシステム単位に指定できます。 946 * 初期値は、true(使用する)です。 947 * 948 * @param flag pageSize引数使用 [true:する/false:しない] 949 * @see #setPageSize( String ) 950 */ 951 public void setUsePageSize( final String flag ) { 952 usePageSize = nval( getRequestParameter( flag ),usePageSize ); 953 } 954 955 /** 956 * 【TAG】maxRowCount 引数を使用するかどうかを指定します(初期値:true)。 957 * 958 * @og.tag 959 * maxRowCount 引数は、RESULT画面のqueryタグで使用する 一回の検索時に 960 * 何件のデータを取得させるかを指定する引数です。 961 * この件数が多いと、多くのデータを検索することが出来ますが、その分表示が 962 * 遅くなります。逆に、少ないと、目的の行まで探し出せないかもしれません。 963 * maxRowCount の値は、rowCountパラメータで画面単位に指定するか、システム 964 * パラメータの DB_MAX_ROW_COUNT でシステム単位に指定できます。 965 * 966 * 初期値は、true(使用する)です。 967 * 968 * @param flag maxRowCount引数使用 [true:する/false:しない] 969 * @see #setMaxRowCount( String ) 970 */ 971 public void setUseRowCount( final String flag ) { 972 useRowCount = nval( getRequestParameter( flag ),useRowCount ); 973 } 974 975 /** 976 * 【TAG】処理時間を表示する TimeView を表示するかどうか[true:する/false:しない]を指定します 977 * (初期値:VIEW_USE_TIMEBAR[={@og.value SystemData#VIEW_USE_TIMEBAR}])。 978 * 979 * @og.tag 980 * true に設定すると、処理時間を表示するバーイメージが表示されます。 981 * これは、DB検索、APサーバー処理、画面表示の各処理時間をバーイメージで 982 * 表示させる機能です。処理時間の目安になります。 983 * (初期値:VIEW_USE_TIMEBAR[={@og.value SystemData#VIEW_USE_TIMEBAR}])。 984 * 985 * @og.rev 6.3.6.0 (2015/08/16) useTimeView の初期値を、VIEW_USE_TIMEBAR にする。 986 * 987 * @param flag 処理時間を表示 [true:する/false:しない] 988 */ 989 public void setUseTimeView( final String flag ) { 990 useTimeView = nval( getRequestParameter( flag ),useTimeView ); 991 } 992 993 /** 994 * 【TAG】pageSize プルダウンメニューの初期表示件数を指定します 995 * (初期値:HTML_PAGESIZE[={@og.value SystemData#HTML_PAGESIZE}])。 996 * 997 * @og.tag 998 * プルダウンメニューを表示する場合の初期値を指定します。 999 * (初期値:ユーザー定数のHTML_PAGESIZE[={@og.value SystemData#HTML_PAGESIZE}])。 1000 * 1001 * @param pSize 表示件数 1002 * @see #setUsePageSize( String ) 1003 * @see org.opengion.hayabusa.common.SystemData#HTML_PAGESIZE 1004 */ 1005 public void setPageSize( final String pSize ) { 1006 pageSize = nval( getRequestParameter( pSize ),pageSize ); 1007 } 1008 1009 /** 1010 * 【TAG】maxRowCount プルダウンメニューの初期値を指定します 1011 * (初期値:DB_MAX_ROW_COUNT[={@og.value SystemData#DB_MAX_ROW_COUNT}])。 1012 * 1013 * @og.tag 1014 * プルダウンメニューを表示する場合のmaxRowCountの初期値を指定します。 1015 * (初期値:ユーザー定数のDB_MAX_ROW_COUNT[={@og.value SystemData#DB_MAX_ROW_COUNT}])。 1016 * 1017 * @param maxSize 最大件数 1018 * @see #setUseRowCount( String ) 1019 * @see org.opengion.hayabusa.common.SystemData#DB_MAX_ROW_COUNT 1020 */ 1021 public void setMaxRowCount( final String maxSize ) { 1022 maxRowCount = nval( getRequestParameter( maxSize ),maxRowCount ); 1023 } 1024 1025 /** 1026 * 【TAG】ダミーのinputタグ(display:none)を出力するか設定します(初期値:false)。 1027 * 1028 * @og.tag 1029 * ダミーのinputタグ(display:none)を出力するか設定します。 1030 * IEではinputが1つだけの場合にエンターでのsubmitが上手くいかないため、ダミーを配置する必要があります。 1031 * trueに設定するとWriteCheckタグがダミーを(常に)出力します。 1032 * (初期値:false)。 1033 * 1034 * @og.rev 5.6.1.0 (2013/02/01) 新規追加 1035 * 1036 * @param flag 出力可否 [true:する/false:しない] 1037 */ 1038 public void setUseDummy( final String flag ) { 1039 useDummy = nval( getRequestParameter( flag ), useDummy ); 1040 } 1041 1042 /** 1043 * 【TAG】query画面等で編集プルダウンを出力するかどうか[true:する/false:しない]を指定します(初期値:true)。 1044 * 1045 * @og.tag 1046 * falseを指定すると編集プルダウンを出さない。 1047 * popup画面等、画面ID単位では編集機能は使うが、部分的に使いたくない場合に 1048 * タグのパラメータとして個別に指定できるようにします。 1049 * 初期値は、互換性の関係から、編集プルダウンを出力する(=true)です。 1050 * 1051 * @og.rev 5.7.5.0 (2014/04/04) 新規追加 1052 * 1053 * @param flag 編集メニュー出力 [true:する/false:しない] 1054 * @see org.opengion.hayabusa.taglib.FileUDTag#setUseEditLink(String) 1055 */ 1056 public void setUseEditMenu( final String flag ) { 1057 useEditMenu = nval( getRequestParameter( flag ),useEditMenu ); 1058 } 1059 1060 /** 1061 * 【TAG】検索ボタンを押下した際に表示されるメッセージリソースIDを指定します 1062 * (初期値:MSG0090[検索中です・・・])。 1063 * 1064 * @og.tag 1065 * headタグのuseBlockUI=true のときに、検索ボタンを押下すると、「検索中です・・・」と表示されます。 1066 * このメッセージのリソースIDを指定します。 1067 * 表示させたくない場合は, blockUIMsg = "" をセットするか、headタグのuseBlockUI=false をセットしてください。 1068 * 1069 * @og.rev 6.4.8.0 (2016/06/24) blockUIMsg を追加。 検索中です・・・ 1070 * 1071 * @param id 検索中ですメッセージID 1072 */ 1073 public void setBlockUIMsg( final String id ) { 1074 final String ids = getRequestParameter( id ); 1075 if( ids != null ) { blockUIMsg = ids; } 1076 } 1077 1078 /** 1079 * このオブジェクトの文字列表現を返します。 1080 * 基本的にデバッグ目的に使用します。 1081 * 1082 * @return このクラスの文字列表現 1083 * @og.rtnNotNull 1084 */ 1085 @Override 1086 public String toString() { 1087 return ToString.title( this.getClass().getName() ) 1088 .println( "VERSION" , VERSION ) 1089 .println( "command" , command ) 1090 .println( "pageSize" , pageSize ) 1091 .println( "maxRowCount" , maxRowCount ) 1092 .println( "accesskey" , accesskey ) 1093 .println( "scope" , scope ) 1094 .println( "useClear" , useClear ) 1095 .println( "usePrevNext" , usePrevNext ) 1096 .println( "usePageSize" , usePageSize ) 1097 .println( "useRowCount" , useRowCount ) 1098 .println( "useTimeView" , useTimeView ) 1099 .println( "clearTarget" , clearTarget ) 1100 .println( "clearHref" , clearHref ) 1101 .println( "clearCommand" , clearCommand ) 1102 .println( "body" , body ) 1103 .println( "Other..." , getAttributes().getAttribute() ) 1104 .fixForm().toString() ; 1105 } 1106}