001 /* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016 package org.opengion.hayabusa.taglib; 017 018 import org.opengion.hayabusa.common.HybsSystem; 019 import org.opengion.hayabusa.common.HybsSystemException; 020 021 import org.opengion.fukurou.util.StringUtil; 022 import static org.opengion.fukurou.util.StringUtil.nval ; 023 024 /** 025 * Whereå¥ã‚’作æ?ã™ã‚‹ãŸã‚ã®æ¡ä»¶ã‚’指定ã—ã¾ã™ã? 026 * 027 * ã“ã?ã‚¿ã‚°ã®value 値ã«ã€{@XXXX} 変数ãŒå«ã¾ã‚Œã¦ã?‚‹å ´åˆã?ãã?リクエストå?ã? 028 * ãªã??åˆã?ã€ã“ã®ã‚¿ã‚°ãã?ã‚‚ã?ãŒãªã«ã‚‚å?力ã—ã¾ã›ã‚“ã€?ã¤ã¾ã‚Šæ¡ä»¶ã‹ã‚‰æ¶ˆãˆã¾ã™ã?) 029 * startKeyã¯ã€value ã‚’é?çµã™ã‚‹å?åˆã?é ã«ç½®ã‹ã‚Œã‚‹æ–‡å—å?ã§ã€whereå¥ã®æœ??ã«ã¯è¡¨ç¤ºã•れãšã? 030 * ãれ以é™ã«ã¤ã?¦ã€è¡¨ç¤ºã•れã¾ã™ã?(ã¤ã¾ã‚Šã?where VALUE1 and VALUE2 and VALUE3 … ã§ã™ã?) 031 * startKey ã®åˆæœŸå€¤ã¯ã€?and" ã§ã™ã? 032 * multi ã¯ã€{@XXXX} 変数ã«ã€å?ãŒè¤?•°å«ã¾ã‚Œã¦ã?‚‹å ´åˆã?処ç?‚’è¦å®šã—ã¾ã™ã? 033 * è¤?•°ã®å€¤ã¨ã¯ã€åŒä¸?ameã§ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹æŒ?®šã‚„ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§ã®è¤?•°æŒ?®šã—ãŸå?åˆã? 034 * リクエストãŒé…å?ã§é€ã‚‰ã‚Œã¾ã™ã?multi="true" ã¨ã™ã‚‹ã¨ã€?xx1','xx2','xx3', ?¥?¥?¥ ã¨ã?† 035 * å½¢å¼ã«å¤‰æ›ã•れã¾ã™ã? 036 * 具体的ã«ã¯ã€?where PN in ( {@PN} )" ã¨ã?†æ–?—å?ã«å¯¾ã—ã¦ã€? 037 * "where PN in ( 'xx1','xx2','xx3' )" を作æ?ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã? 038 * multi ã®åˆæœŸå€¤ã¯ã€?false" ã§ã™ã? 039 * SystemData ã® USE_SQL_INJECTION_CHECK ã?true ã‹ã?quotCheck 属æ?ã?true ã®å ´åˆã?ã€? 040 * ?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç–用ã®ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?リクエスト引数㫠041 * クォーãƒ?‚£ã‚·ãƒ§ãƒ³(')ãŒå«ã¾ã‚Œã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ã? 042 * åŒæ§˜ã«USE_XSS_CHECKãŒtrueã‹ã?xssCheck属æ?ãŒtrueã®å ´åˆã?ã€? 043 * クãƒã‚¹ã‚µã‚¤ãƒˆã‚¹ã‚¹ã‚¯ãƒªãƒ—ティング(XSS)対ç–ã?ãŸã‚less/greater than signã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã? 044 * 045 * å?±žæ?ã¯ã€{@XXXX} 変数ãŒä½¿ç”¨ã§ãã¾ã™ã? 046 * ã“れã¯ã€ServletRequest ã‹ã‚‰ã€XXXX ã‚’ã‚ーã«å€¤ã‚’å–りå?ã?ã“ã?変数ã«å‰²ã‚Šå½“ã¦ã¾ã™ã? 047 * ã¤ã¾ã‚Šã?ã“ã?XXXXã‚’ã‚ーã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚Œã?ã€ã“ã®å¤‰æ•°ã«å€¤ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã? 048 * 049 * @og.formSample 050 * â—å½¢å¼ï¼?lt;og:and startKey="[and|or|…]" value="…" multi="[false|true]" /> 051 * â—body?šã‚ã‚?EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã? 052 * 053 * â—Tag定義?? 054 * <og:and 055 * startKey ã€TAG】SQLæ¡ä»¶å¥ã®æœ??ã®æ¼”ç®—åã‚’æŒ?®šã—ã¾ã?åˆæœŸå€¤:and) 056 * value ã€TAG】æ¡ä»¶ã®å€¤ã‚?ã‚»ãƒ?ƒˆã—ã¾ã? 057 * multi ã€TAG】è¤?•°ã®å¼•æ•°ã«å¯¾ã—ã¦å‡¦ç?™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:false) 058 * separator ã€TAG】multi アクション時ã?æ–?—å?ã‚’å?割ã™ã‚‹é ?›®åŒºåˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã? 059 * quotCheck ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã® ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³(') å˜åœ¨ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?(åˆæœŸå€¤:USE_SQL_INJECTION_CHECK[=true]) 060 * instrVals ã€TAG】スペã?スã§åŒºåˆ?‚‰ã‚ŒãŸè¤?•°ã®å€¤ã™ã¹ã¦ã‚’å«ã‚?¡ä»¶ã‚’作æ?ã—ã¾ã? 061 * instrType ã€TAG】instrValsã§è¤?•°ã®å€¤ã‚’æ¡ä»¶ã«ã™ã‚‹éš›ã?方法をæŒ?®šã—ã¾ã?åˆæœŸå€¤:and) 062 * xssCheck ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã® HTMLTagé–‹å§?終äº?–‡å?><) å˜åœ¨ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?(åˆæœŸå€¤:USE_XSS_CHECK[=true]) 063 * caseKey ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶ã‚ーを指定ã—ã¾ã?åˆæœŸå€¤:null) 064 * caseVal ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶å€¤ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null) 065 * caseNN ã€TAG】指定ã?値ãŒã?null/ã‚¼ãƒæ–?—å? ã§ãªã??å?Not Null=NN)ã¯ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã?åˆæœŸå€¤:true) 066 * caseNull ã€TAG】指定ã?値ãŒã?null/ã‚¼ãƒæ–?—å? ã®å ´åˆã?ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã?åˆæœŸå€¤:true) 067 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 068 * > ... Body ... 069 * </og:and> 070 * 071 * â—使用ä¾? 072 * <og:query command="NEW"> 073 * select PN,YOBI,NMEN,HINM from XX01 074 * <og:where> 075 * <og:and value="PN = '{@PN}'" /> 076 * <og:and value="YOBI like '{@YOBI}%'" /> 077 * </og:where> 078 * order by PN 079 * </og:query> 080 * 081 * ・検索æ¡ä»¶ãŒå?力ã•ã‚ŒãŸæ™?PN=AAA , YOBI=BBB) 082 * 作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 where PN = 'AAA' and YOBI like 'BBB%' order by PN 083 * 084 * ・検索æ¡ä»¶ãŒç‰‡æ–¹å…¥åŠ›ã•れãªã‹ã£ãŸæ™‚(PNãŒNULLã®ã¨ã? YOBI=BBB) 085 * 作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 where YOBI like 'BBB%' order by PN 086 * 087 * ・検索æ¡ä»¶ãŒå?力ã•れãªã‹ã£ãŸæ™‚(PNãŒNULL, YOBIãŒNULL) WHEREå¥ãŒãªããªã‚‹ã? 088 * 作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 order by PN 089 * 090 * 注æ„?WhereTagを使ã‚ãªã??åˆã«ã€æ¤œç´¢æ¡ä»¶ãŒå?力ã•れãªã‹ã£ãŸå?åˆã?ã€ä¸‹è¨˜ã?よã†ã«ãªã‚Šã¾ã™ã? 091 * select PN,YOBI,NMEN,HINM from XX01 where PN = '' and YOBI like '%' order by PN 092 * 093 * -------------------------------------------------------------------------------------------------------------- 094 * 095 * <og:query command="NEW"> 096 * select PN,YOBI,NMEN,HINM from XX01 where PN="11111" 097 * <og:where startKey="and"> 098 * <og:and value="YOBI in ({@YOBI})" multi="true" /> 099 * <og:and value="HINM like '{@HINM}%'" /> 100 * </og:where> 101 * order by PN 102 * </og:query> 103 * 104 * ・YOBI ã‚’è¤?•°é¸æŠžã—ã€in ã§æ¤œç´¢ã™ã‚‹æ™?YOBI=AA,BB,CC ã‚’é¸æŠ? 105 * 作æ?ã•れるSQLæ–?çselect PN,YOBI,NMEN,HINM from XX01 where PN = '11111' 106 * and YOBI in ( 'AA','BB','CC' ) and HINM like 'BBB%' order by PN 107 * 108 * @og.group ç”»é¢éƒ¨å“? 109 * 110 * @version 4.0 111 * @author Kazuhiko Hasegawa 112 * @since JDK5.0, 113 */ 114 public class SqlAndTag extends CommonTagSupport { 115 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 116 private static final String VERSION = "5.5.1.1 (2012/04/06)" ; 117 118 private static final long serialVersionUID = 551120120406L ; 119 120 private String startKey = "and"; 121 private String value = ""; 122 private String instrVals = null; // 3.8.8.1 (2007/01/06) 123 private String instrType = "and"; // 5.4.1.0 (2011/11/01) 124 private boolean multi = false; 125 private boolean quotCheck = HybsSystem.sysBool( "USE_SQL_INJECTION_CHECK" ); // 4.0.0 (2005/08/31) 126 private boolean xssCheck = HybsSystem.sysBool( "USE_XSS_CHECK" ); // 5.0.0.2 (2009/09/15) 127 128 private boolean allNull = false; // 5.0.0.2 (2009/09/15) 129 130 // private String matchKey = null; // 5.1.9.0 (2010/08/01) â‡?5.2.2.0 (2010/11/01) å»?¢(caseKey,caseVal属æ?を使用ã—ã¦ãã ã•ã„ã€? 131 132 // private String matchVal = null; // 5.1.9.0 (2010/08/01) â‡?5.2.2.0 (2010/11/01) å»?¢(caseKey,caseVal属æ?を使用ã—ã¦ãã ã•ã„ã€? 133 134 private String separator = null; // 5.2.2.0 (2010/11/01) é ?›®åŒºåˆ?‚Šæ–?? 135 136 /** 137 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 138 * 139 * @og.rev 4.0.0.0 (2006/12/05) BODY 部ã®å€¤ã‚?value ã«ä½¿ç”¨ã™ã‚‹æ©Ÿè?追åŠ? 140 * @og.rev 4.0.0.0 (2005/08/31) useQuotCheck() ã«ã‚ˆã‚‹?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç? 141 * @og.rev 5.0.0.2 (2009/09/15) XSS対ç? 142 * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿? 143 * 144 * @return 後続å?ç??æŒ?¤º 145 */ 146 @Override 147 public int doStartTag() { 148 // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿? 149 if( useTag() ) { 150 useQuotCheck( quotCheck ); 151 // 5.0.0.2 (2009/09/15) XSS対ç? 152 useXssCheck( xssCheck ); 153 154 value = getRequestParameter( value ); 155 156 if( value == null || value.isEmpty() ) { 157 return( EVAL_BODY_BUFFERED ); // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™? 158 } 159 160 // if( value != null && value.length() > 0 ) { 161 // return( SKIP_BODY ); // Body を評価ã—ãªã? 162 // } 163 // else { 164 // return( EVAL_BODY_BUFFERED ); // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™? 165 // } 166 } 167 return( SKIP_BODY ); // Body を評価ã—ãªã? 168 } 169 170 /** 171 * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã? 172 * 173 * @og.rev 4.0.0.0 (2006/12/05) BODY 部ã®å€¤ã‚?value ã«ä½¿ç”¨ã™ã‚‹æ©Ÿè?追åŠ? 174 * 175 * @return 後続å?ç??æŒ?¤º(SKIP_BODY) 176 */ 177 @Override 178 public int doAfterBody() { 179 value = getBodyString(); 180 return(SKIP_BODY); 181 } 182 183 /** 184 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 185 * 186 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€? 187 * @og.rev 3.8.8.1 (2007/01/06) makeInstrVals ã‚’åŠ å‘³ã™ã‚‹ã€? 188 * @og.rev 5.0.0.2 (2009/09/15) multi時ã?allNull対å¿? 189 * @og.rev 5.1.9.0 (2010/08/01) matchKey ã€matchVal 対å¿?â‡?5.2.2.0 (2010/11/01) å»?¢ 190 * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿? 191 * 192 * @return 後続å?ç??æŒ?¤º 193 */ 194 @Override 195 public int doEndTag() { 196 debugPrint(); // 4.0.0 (2005/02/28) 197 // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿? 198 if( useTag() ) { 199 SqlWhereTag where = (SqlWhereTag)findAncestorWithClass( this,SqlWhereTag.class ); 200 if( where == null ) { 201 // String errMsg = "<b>ã“ã?ã‚¿ã‚°ã¯ã€where ã‚¿ã‚°ã®å†?ƒ¨ã«ãŠãå¿?¦ãŒã‚りã¾ã™ã?</b>"; 202 String errMsg = "<b>" + getTagName() + "ã‚¿ã‚°ã¯ã€where ã‚¿ã‚°ã®å†?ƒ¨ã«ãŠãå¿?¦ãŒã‚りã¾ã™ã?</b>"; 203 throw new HybsSystemException( errMsg ); 204 } 205 206 // 5.1.9.0 (2010/08/01) matchKey ã€matchVal 対å¿?â‡?5.2.2.0 (2010/11/01) å»?¢ 207 // boolean flag = (matchKey == null) || (matchVal == null) || matchKey.matches( matchVal ) ; 208 209 // if( ! isNull() ) { 210 // if( ! isNull() && ! allNull ) { // 5.0.0.2 (2009/09/15) 211 // if( ! isNull() && ! allNull && flag ) { // 5.1.9.0 (2010/08/01) 212 if( ! isNull() && ! allNull ) { // 5.2.2.0 (2010/11/01) 213 // value = makeInstrVals( instrVals,value ); // 3.8.8.1 (2007/01/06) 214 value = makeInstrVals( instrVals,instrType,value ); // 5.4.1.0 (2011/11/01) 215 if( value != null ) { 216 set( "keyWord", startKey ); 217 set( "value" , value ); 218 where.setAttributes( getAttributes() ); 219 } 220 } 221 } 222 return(EVAL_PAGE); 223 } 224 225 /** 226 * タグリブオブジェクトをリリースã—ã¾ã™ã? 227 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã? 228 * 229 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ? 230 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€? 231 * @og.rev 3.8.8.1 (2007/01/06) instrVals 属æ?追åŠ? 232 * @og.rev 4.0.0.0 (2005/08/31) quotCheck 属æ?ã®è¿½åŠ? 233 * @og.rev 5.0.0.2 (2009/09/15) XSS対å¿? 234 * @og.rev 5.0.0.2 (2009/09/15) multi時ã?allNull対å¿? 235 * @og.rev 5.1.9.0 (2010/08/01) matchKeyã€matchVal 属æ?ã®è¿½åŠ? 236 * @og.rev 5.2.2.0 (2010/11/01) separator , isMatch 属æ?ã®è¿½åŠ? 237 * @og.rev 5.2.2.0 (2010/11/01) matchKeyã€matchVal 属æ?å»?¢(caseKey,caseVal属æ?を使用ã—ã¦ãã ã•ã„ã€? 238 * @og.rev 5.4.1.0 (2011/11/01) instrType属æ?追åŠ? 239 */ 240 @Override 241 protected void release2() { 242 super.release2(); 243 startKey = "and"; 244 value = ""; 245 instrVals = null; // 3.8.8.1 (2007/01/06) 246 instrType = "and"; // 5.4.1.0 (2011/11/01) 247 multi = false; 248 quotCheck = HybsSystem.sysBool( "USE_SQL_INJECTION_CHECK" ); // 4.0.0 (2005/08/31) 249 xssCheck = HybsSystem.sysBool( "USE_XSS_CHECK" ); // 5.0.0.2 (2009/09/15) 250 allNull = false; // 5.0.0.2 (2009/09/15) 251 // matchKey = null; // 5.1.9.0 (2010/08/01) æ–°è¦è¿½åŠ? 252 // matchVal = null; // 5.1.9.0 (2010/08/01) æ–°è¦è¿½åŠ? 253 separator = null; // 5.2.2.0 (2010/11/01) é ?›®åŒºåˆ?‚Šæ–?? 254 } 255 256 /** 257 * ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®æ–?—å?ã‚’å–å¾—ã—ã¾ã™ã? 258 * 259 * ã“れã¯ã€??常ã®getRequestParameter 処ç??ä¸ã§å‘¼ã°ã‚Œã‚‹ getRequestValue ã‚? 260 * オーãƒã?ライトã—ã¦ã?¾ã™ã? 261 * 262 * @og.rev 5.0.0.2 (2009/09/15) valuesã®å…¨NULL/空æ–?—ã‚’isNull扱ã?«ã™ã‚‹ 263 * @og.rev 5.3.8.0 (2011/08/01) Attributeç‰ã‹ã‚‰ã‚‚値ãŒå–å¾—ã§ãるよã†ã«ã™ã‚‹ã€‚ã?対応時ã®ç‰¹æ®Šå?ç? 264 * 265 * @param key ã‚ー 266 * 267 * @return ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®æ–?—å? 268 */ 269 @Override 270 protected String getRequestValue( final String key ) { 271 String rtn = ""; 272 273 if( multi ) { 274 // 5.3.8.0 (2011/08/01) getRequestValues ã®ä¸ã§ã€getRequestValue を呼ã³å‡ºã™ãŸã‚ã“ã®ã¾ã¾ã§ã¯ 275 // å†å¸°å‘¼ã³å‡ºã—ãŒæ°¸é?«ç¶šãã®ã§ã€?¼’回目以é™ã?ã€å?帰ã—ãªã?‚ˆã?«ã€å¼·åˆ¶çš?« multi ã®å€¤ã‚’æ›¸ãæ›ãˆã¾ã™ã? 276 multi = false; // 5.3.8.0 (2011/08/01) å†å¸°ã—ãªã?‚ˆã?«ã€å¼·åˆ¶çš?«å€¤ã‚’æ›¸ãæ›ã? 277 String[] array = getRequestValues( key ); 278 allNull = true; // 5.0.0.2 (2009/09/15) arrayã®å†?®¹ãŒå?ã¦null/空æ–?—ã‹ 279 if( ! isNull() ) { 280 // 5.0.0.2 (2009/09/15) å…¨ã¦null/空æ–?—ã?å ´åˆã?nullã¨æ‰±ã? 281 for( int i = 0; i < array.length; i++ ) { 282 if( array[i] != null && array[i].length() > 0 ) { 283 allNull = false; 284 break; 285 } 286 } 287 if( ! allNull ){ 288 rtn = makeCSVvalue( array ); 289 } 290 } 291 multi = true; // 5.3.8.0 (2011/08/01) 強制çš?«æ›¸ãæ›ãˆãŸå€¤ã‚’å?ã«æˆ»ã™ã? 292 } 293 else { 294 rtn = super.getRequestValue( key ); 295 } 296 return rtn ; 297 } 298 299 /** 300 * è¤?•°ã®å€¤ã‚?'xx1','xx2','xx3', ?¥?¥?¥ ã¨ã?†å½¢å¼ã«å¤‰æ›ã—ã¾ã™ã? 301 * 302 * ã“ã?処ç??ã€in ãªã©ã§ä½¿ç”¨ã™ã‚‹ãŸã‚ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é…å?ã§å—ã‘å–ã£ã¦å‡¦ç? 303 * ã™ã‚‹å ´åˆã?æ–?—å?ã‚’åŠ å·¥ã—ã¾ã™ã? 304 * 305 * @og.rev 5.2.2.0 (2010/11/01) separator 対å¿? 306 * 307 * @param array å…??é…å?æ–?—å? 308 * 309 * @return 連çµå¾Œã?æ–?—å? 310 */ 311 private String makeCSVvalue( final String[] array ) { 312 if( array == null || array.length == 0 ) { 313 String errMsg = "array 引数ã«ã€null ã‚??サイズゼãƒã®é…å?ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ã€?; 314 throw new HybsSystemException( errMsg ); 315 } 316 317 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 318 319 if( separator != null ) { 320 for(int i=0; i < array.length; i++) { 321 String[] ary = array[i].split( separator ); 322 for( int j=0; j<ary.length; j++ ) { 323 buf.append( "'" ); 324 buf.append( ary[j] ); 325 buf.append( "'," ); 326 } 327 } 328 buf.deleteCharAt( buf.length()-1 ); // æœ?¾Œã? ピリオドを削除ã™ã‚‹ã€? 329 } 330 else { 331 for(int i=0; i < array.length; i++) { 332 buf.append( "'" ); 333 buf.append( array[i] ); 334 buf.append( "'," ); 335 } 336 buf.deleteCharAt( buf.length()-1 ); // æœ?¾Œã? ピリオドを削除ã™ã‚‹ã€? 337 } 338 // buf.append( "'" ); 339 // buf.append( array[0] ); 340 // buf.append( "'" ); 341 // for(int i=1; i < array.length; i++) { 342 // buf.append( ",'" ); 343 // buf.append( array[i] ); 344 // buf.append( "'" ); 345 // } 346 return buf.toString(); 347 } 348 349 /** 350 * スペã?スã§åŒºåˆ?‚‰ã‚ŒãŸè¤?•°ã®å€¤ã‚?and 接続ã§é€£çµã—ã¾ã™ã? 351 * 352 * value="CLM" instrVals="ABC DEF GHI" ã¨æŒ?®šã™ã‚‹ã¨ã€? 353 * value="CLM LIKE '%ABC%' AND CLM LIKE '%DEF%' AND CLM LIKE '%GHI%' " 354 * ã¨ã?†æ–?—å?を作æ?ã—ã¾ã™ã? 355 * 個別ã«LIKE検索é ?›®ã‚?AND 連çµã™ã‚‹ç‚ºã€ç¾ã‚Œã‚‹å ´æ‰?«ä¾å˜ã—ã¾ã›ã‚“ã€? 356 * é€?«ã€ç¾ã‚Œã‚‹é ?ºã‚’æŒ?®šã™ã‚‹å?åˆã?ã€ABC%DEF ã®æ§˜ã«æŒ?®šå¯èƒ½ã§ã™ã? 357 * ãŸã ã—ã?columnMarker ã® instrVals ã§ã€è¤?•°æ–?—ã?マã?カーを行ã†å ´åˆã? 358 * ABC%DEF ã¨ã?†æ–?—å?ã¯ã€ã‚ªãƒªã‚¸ãƒŠãƒ«ã§ãªã??ã§ã€ã?ークアãƒ??ã•れã¾ã›ã‚“ã€? 359 * 360 * @og.rev 5.4.1.0 (2011/11/01) instrType属æ?対å¿? 361 * @og.rev 5.5.1.1 (2012/04/06) notin対å¿? 362 * 363 * @param instrVals ç¹°è¿”ã—処ç?‚’行ㆠ値 364 * @param instrType é€£çµæ–¹æ³? 365 * @param value ç¹°è¿”ã—処ç?‚’行ㆠvalue 366 * 367 * @return 連çµå¾Œã?æ–?—å? 368 * @see #setInstrVals( String ) 369 * @see ColumnMarkerTag#setInstrVals( String ) 370 */ 371 private String makeInstrVals( final String instrVals, final String instrType , final String value ) { 372 if( instrVals == null || instrVals.length() == 0 ) { return value; } 373 374 String reqVals = nval( getRequestParameter( instrVals ),null ); 375 if( reqVals == null || reqVals.length() == 0 ) { return null; } 376 377 final String[] vals ; 378 if( multi ) { 379 // multi ã®ã¨ãã?ã€makeCSVvalue ã§åŠ?·¥ã•れãŸå?ã«ãªã£ã¦ã?‚‹ã€? 380 vals = StringUtil.csv2Array( reqVals,',' ); 381 // å‰å¾Œã? ' ã¯ãšã— 382 for( int i=0; i<vals.length; i++ ) { 383 vals[i] = vals[i].substring( 1,vals[i].length()-1 ); 384 } 385 } 386 else { 387 vals = StringUtil.csv2Array( reqVals,' ' ); 388 } 389 390 if( vals == null || vals.length == 0 ) { return null; } 391 392 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL ); 393 394 // buf.append( value ); 395 // buf.append( " LIKE '%" ); 396 // buf.append( vals[0] ); 397 // buf.append( "%'" ); 398 399 buf.append( " (" ); 400 // æ¡ä»¶:and â‡?å??ã‚’andã®likeæ¡ä»¶ã§çµåˆ(%ã‚り) 401 if( instrType.startsWith( "a" ) ) { 402 for(int i=0; i < vals.length; i++) { 403 if( i > 0 ) { buf.append( " and " ); } 404 buf.append( value ); 405 buf.append( " LIKE '%" ).append( vals[i] ).append( "%'" ); 406 } 407 } 408 // æ¡ä»¶:or â‡?å??ã‚’orã®likeæ¡ä»¶ã§çµåˆ(%ã‚り) 409 else if( instrType.startsWith( "o" ) ) { 410 for(int i=0; i < vals.length; i++) { 411 if( i > 0 ) { buf.append( " or " ); } 412 buf.append( value ); 413 buf.append( " LIKE '%" ).append( vals[i] ).append( "%'" ); 414 } 415 } 416 // æ¡ä»¶:in â‡?å??ã‚’orã®likeæ¡ä»¶ã§çµåˆ(%ãªã? 417 else if( instrType.startsWith( "i" ) ) { 418 for(int i=0; i < vals.length; i++) { 419 if( i > 0 ) { buf.append( " or " ); } 420 buf.append( value ); 421 buf.append( " LIKE '" ).append( vals[i] ).append( "'" ); 422 } 423 } 424 // æ¡ä»¶:notin â‡?å??ã‚’andã®not likeæ¡ä»¶ã§çµåˆ(%ãªã? 5.5.1.1(2012/04/05) 425 else if( instrType.startsWith( "n" ) ) { 426 for(int i=0; i < vals.length; i++) { 427 if( i > 0 ) { buf.append( " and " ); } 428 buf.append( value ); 429 buf.append( " NOT LIKE '" ).append( vals[i] ).append( "'" ); 430 } 431 } 432 else { 433 String errMsg = "instrTypeã«ã¯ã€?and','or','in','notin'ã®ã?šã‚Œã‹ã‚’指定ã—ã¦ä¸‹ã•ã??instrType=[" + instrType + "]"; 434 throw new HybsSystemException( errMsg ); 435 } 436 buf.append( ") " ); 437 438 return buf.toString(); 439 } 440 441 /** 442 * ã€TAG】SQLæ¡ä»¶å¥ã®æœ??ã®æ¼”ç®—åã‚’æŒ?®šã—ã¾ã?åˆæœŸå€¤:and)ã€? 443 * 444 * @og.tag 445 * value ã‚’é?çµã™ã‚‹å?åˆã?é ã«ç½®ã‹ã‚Œã‚‹æ–‡å—å?ã§ã€whereå¥ã®æœ??ã«ã¯è¡¨ç¤ºã•れãšã? 446 * ãれ以é™ã«ã¤ã?¦ã€è¡¨ç¤ºã•れã¾ã™ã? 447 * (ã¤ã¾ã‚Šã?where VALUE1 and VALUE2 and VALUE3 … ã§ã™ã?) 448 * startKey ã®åˆæœŸå€¤ã¯ã€?and" ã§ã™ã? 449 * 450 * @param skey æ¡ä»¶å¥ã®æœ??ã®æ¼”ç®—å? 451 */ 452 public void setStartKey( final String skey ) { 453 if( skey != null && skey.length() > 0 ) { startKey = skey; } 454 } 455 456 /** 457 * ã€TAG】æ¡ä»¶ã®å€¤ã‚?ã‚»ãƒ?ƒˆã—ã¾ã™ã? 458 * 459 * @og.tag 460 * æ¡ä»¶å€¤ã«ã€{@XXXX} 変数ãŒå«ã¾ã‚Œã¦ã?‚‹å ´åˆã?ãã?リクエストå?ãŒãªã??åˆã?ã€? 461 * ã“ã?ã‚¿ã‚°ãã?ã‚‚ã?ãŒãªã«ã‚‚å?力ã—ã¾ã›ã‚“ã€?ã¤ã¾ã‚Šæ¡ä»¶ã‹ã‚‰æ¶ˆãˆã¾ã™ã?) 462 * BODY 部ã«è¨˜è¿°ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?ãã?å ´åˆã?ã€æ¡ä»¶å±žæ?ã«ãªã«ã‚‚è¨å®šã§ãã¾ã›ã‚“ã€? 463 * 464 * @param val æ¡ä»¶å€¤ 465 */ 466 public void setValue( final String val ) { 467 value = val; 468 } 469 470 /** 471 * ã€TAG】スペã?スã§åŒºåˆ?‚‰ã‚ŒãŸè¤?•°ã®å€¤ã™ã¹ã¦ã‚’å«ã‚?¡ä»¶ã‚’作æ?ã—ã¾ã™ã? 472 * 473 * @og.tag 474 * 通常ã€value="CLM LIKE 'ABC%'" ã¨ã?†æ–?—å?を指定ã—ã¾ã™ãŒã€? 475 * value="CLM" instrVals="ABC DEF GHI" ã¨æŒ?®šã™ã‚‹ã¨ã€? 476 * value="CLM LIKE '%ABC%' AND CLM LIKE '%DEF%' AND CLM LIKE '%GHI%' " 477 * ã¨ã?†æ–?—å?を作æ?ã—ã¾ã™ã? 478 * ã“れã¯ã€instrVals ã«æŒ?®šã—ãŸå¼•æ•°ã«å¯¾ã—ã¦ã€ã‚¹ãƒšã?ス区åˆ?‚Šã§åˆ?‰²ã—ã? 479 * 剿–¹ã® value ã«è¤?•°ã®ANDæ¤œç´¢ã‚’åŒæ™‚ã«å®Ÿç¾ã§ãるよã†ã«æŒ?®šã—ã¾ã? 480 * 個別ã«LIKE検索é ?›®ã‚?AND 連çµã™ã‚‹ç‚ºã€ç¾ã‚Œã‚‹å ´æ‰?«ä¾å˜ã—ã¾ã›ã‚“ã€? 481 * é€?«ã€ç¾ã‚Œã‚‹é ?ºã‚’æŒ?®šã™ã‚‹å?åˆã?ã€ABC%DEF ã®æ§˜ã«æŒ?®šå¯èƒ½ã§ã™ã? 482 * ãŸã ã—ã?columnMarker ã® instrVals ã§ã€è¤?•°æ–?—ã?マã?カーを行ã†å ´åˆã? 483 * ABC%DEF ã¨ã?†æ–?—å?ã¯ã€ã‚ªãƒªã‚¸ãƒŠãƒ«ã§ãªã??ã§ã€ã?ークアãƒ??ã•れã¾ã›ã‚“ã€? 484 * ※instrType属æ?ã®æŒ?®šã«ã‚ˆã‚Šæ¡ä»¶ã®ç”Ÿæ?方法を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã? 485 * 詳細ã«ã¤ã?¦ã¯ã€instrType属æ?ã®ãƒ‰ã‚ュメントをå‚ç?下ã•ã?? 486 * 487 * @param val è¤?ˆæ¡ä»¶ä½œæ?ã®ãŸã‚ã®è¨å®šå? 488 * @see #setInstrType 489 * @see ColumnMarkerTag#setInstrVals( String ) 490 */ 491 public void setInstrVals( final String val ) { 492 instrVals = val; 493 } 494 495 /** 496 * ã€TAG】instrValsã§è¤?•°ã®å€¤ã‚’æ¡ä»¶ã«ã™ã‚‹éš›ã?方法をæŒ?®šã—ã¾ã?åˆæœŸå€¤:and)ã€? 497 * 498 * @og.tag 499 * 通常ã€instrValsã«æŒ?®šã•れãŸå€¤ã¯ã€ã‚¹ãƒšã?ス区åˆ?‚Šã§åˆ?‰²ã—ãŸå??ã‚’LIKEæ¡ä»¶ã¨ã—ã¦andçµåˆã—ã¾ã™ã? 500 * ã—ã‹ã—ã?instrType属æ?を変更ã™ã‚‹ã“ã¨ã§ã€ã“ã®æ¡ä»¶å¼ã?生æ?方法を変更 501 * ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã? 502 * 具体的ã«ã¯ã€ä»¥ä¸‹ã?通りã§ã™ã? 503 * â‘?nstrTypeã«"and"ãŒæŒ‡å®šã•れã¦ã?‚‹å ´å?åˆæœŸå€¤) 504 * ã‚¿ã‚°ã®è¨˜è¿° : value="CLM" instrVals="ABC DEF GHI" 505 * 生æ?æ–?—å? : "( CLM LIKE '%ABC%' AND CLM LIKE '%DEF%' AND CLM LIKE '%GHI%' )" 506 * â‘¡instrTypeã«"or"ãŒæŒ‡å®šã•れã¦ã?‚‹å ´å? 507 * ã‚¿ã‚°ã®è¨˜è¿° : value="CLM" instrVals="ABC DEF GHI" 508 * 生æ?æ–?—å? : "( CLM LIKE '%ABC%' OR CLM LIKE '%DEF%' OR CLM LIKE '%GHI%' )" 509 * â‘¢instrTypeã«"in"ãŒæŒ‡å®šã•れã¦ã?‚‹å ´å? 510 * ã‚¿ã‚°ã®è¨˜è¿° : value="CLM" instrVals="ABC DEF GHI" 511 * 生æ?æ–?—å? : "( CLM LIKE 'ABC' OR CLM LIKE 'DEF5' OR CLM LIKE 'GHI' )" 512 * â‘£instrTypeã«"notin"ãŒæŒ‡å®šã•れã¦ã?‚‹å ´å? 513 * ã‚¿ã‚°ã®è¨˜è¿° : value="CLM" instrVals="ABC DEF GHI" 514 * 生æ?æ–?—å? : "( CLM NOT LIKE 'ABC' AND CLM NOT LIKE 'DEF5' AND CLM NOT LIKE 'GHI' )" 515 * ※ã“ã?属æ?を指定ã—ãªã??åˆã?ã€â‘ ã®LIKEæ¡ä»¶ã§ã®andçµåˆã¨ãªã‚Šã¾ã™ã? 516 * ※③④ã«ã¤ã?¦ã€LIKEæ¡ä»¶ã§%ã‚’è?å‹•ä»˜åŠ ã—ãªã?“ã¨ã«ã‚ˆã‚Šã€ç”»é¢ã‹ã‚‰ã®å…¥åŠ›å?ã«å¿œã˜ã¦ã€? 517 * 剿–¹ä¸??ã€å¾Œæ–¹ä¸??ã€å‰å¾Œæ–¹ä¸??ã®åˆ¶å¾¡ã‚’行ã†ã“ã¨ãŒã§ãã¾ã™ã? 518 * 519 * @og.rev 5.5.1.1 (2012/04/06) notin対å¿?コメント修æ£) 520 * 521 * @param tp æ¡ä»¶æ–¹æ³•[and/or/in/notin] 522 * @see #setInstrVals( String ) 523 */ 524 public void setInstrType( final String tp ) { 525 instrType = nval( getRequestParameter( tp ),tp ); 526 } 527 528 /** 529 * ã€TAG】è¤?•°ã®å¼•æ•°ã«å¯¾ã—ã¦å‡¦ç?™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:false)ã€? 530 * 531 * @og.tag 532 * {@XXXX} 変数ã«ã€å?ãŒè¤?•°å«ã¾ã‚Œã¦ã?‚‹å ´åˆã?処ç?‚’è¦å®šã—ã¾ã™ã? 533 * multi="true" ã«è¨å®šã™ã‚‹ã¨ã€è¤?•°ã®å¼•æ•°ã¯ã€?xx1','xx2','xx3', ?¥?¥?¥ ã¨ã?† 534 * å½¢å¼ã«å¤‰æ›ã—ã¾ã™ã? 535 * where æ¡ä»¶ã§è¨?†ã¨ã€?"where PN in ( {@PN} )" ã¨ã?†æ–?—å?ã«å¯¾ã—ã¦ã€? 536 * "where PN in ( 'xx1','xx2','xx3' )" を作æ?ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã? 537 * åˆæœŸå€¤ã¯ã€?false (マルãƒå¤‰æ›ã—ãªã? ã§ã™ã? 538 * 539 * @param flag マルãƒå¤‰æ› [true:ã™ã‚‹/ãれ以å¤?ã—ãªã? 540 * @see #setSeparator( String ) 541 */ 542 public void setMulti( final String flag ) { 543 multi = nval( flag,multi ); 544 } 545 546 /** 547 * ã€TAG】multi アクション時ã?æ–?—å?ã‚’å?割ã™ã‚‹é ?›®åŒºåˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 548 * 549 * @og.tag 550 * multi="true" ã®å ´åˆã?è¤?•°ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’連çµã—ã¦ã€?in å¥ã§å•åˆã›ã‚’è¡Œã†æ–?—å?ã‚? 551 * 作æ?ã—ã¾ã™ãŒã€separator を指定ã™ã‚‹ã¨ã€ã•らã«ã€separator ã§æ–?—å?ã‚’å?割ã—ã¦ã€? 552 * in å¥ã®å¼•数を構築ã—ã¾ã™ã? 553 * 具体的ã«ã¯ã€å?割後ã?æ–?—å?ãŒã?è¤?•°ã®å€‹ã?ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã¨åŒã˜å½¢å¼ã«åŠ?·¥ã•れã¾ã™ã? 554 * ã“ã?機è?ã¯ã€multi="true" を指定ã—ãŸå?åˆã?ã¿æœ‰åйã«ãªã‚Šã¾ã™ã? 555 * åˆæœŸå€¤ã¯ã€null ã§ã™ã?ã¤ã¾ã‚Šã?åˆ?‰²å‡¦ç??行ã„ã¾ã›ã‚“ã€? 556 * 557 * @og.rev 5.2.2.0 (2010/11/01) æ–°è¦è¿½åŠ? 558 * 559 * @param sepa é ?›®åŒºåˆ?‚Šæ–?? 560 * @see #setMulti( String ) 561 */ 562 public void setSeparator( final String sepa ) { 563 separator = nval( getRequestParameter( sepa ),separator ); 564 } 565 566 /** 567 * ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã® ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³(') å˜åœ¨ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã? 568 * (åˆæœŸå€¤:USE_SQL_INJECTION_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK}])ã€? 569 * 570 * @og.tag 571 * ?³?±?¬ã‚¤ãƒ³ã‚¸ã‚§ã‚¯ã‚·ãƒ§ãƒ³å¯¾ç–ã?ä¸?¤ã¨ã—ã¦ã€æš«å®šçš„ã§ã¯ã‚りã¾ã™ãŒã€SQLã®ãƒ‘ラメータ㫠572 * æ¸¡ã™æ–‡å—å?ã«ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³(') を許ã•ãªã?¨å®šã«ã™ã‚Œã°ã€ã‚る程度ã¯é˜²æ¢ã§ãã¾ã™ã? 573 * æ•°å—タイプã?引数ã«ã¯ã€?or 5=5 ãªã©ã®ã‚¯ã‚©ãƒ¼ãƒ?‚£ã‚·ãƒ§ãƒ³ã‚’使用ã—ãªã?‚³ãƒ¼ãƒ‰ã‚’埋ã‚ã¦ã‚‚ã? 574 * æ•°å—ãƒã‚§ãƒ?‚¯ã§æ¤œå?å¯èƒ½ã§ã™ã?æ–?—タイプã?å ´åˆã?ã€å¿?š (')ã‚’ã?ãšã—ã¦ã€? 575 * ' or 'A' like 'A ã®ã‚ˆã†ãªå½¢å¼ã«ãªã‚‹ç‚ºã€?')ãƒã‚§ãƒ?‚¯ã?‘ã§ã‚‚有効ã§ã™ã? 576 * (') ãŒå«ã¾ã‚Œã¦ã?Ÿã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹(true)?ã‹ãƒŽã?ãƒã‚§ãƒ?‚¯ã?false)を指定ã—ã¾ã™ã? 577 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®USE_SQL_INJECTION_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK}])ã€? 578 * 579 * @og.rev 4.0.0.0 (2005/08/31) æ–°è¦è¿½åŠ? 580 * 581 * @param flag クォーãƒ?‚£ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ [true:ã™ã‚‹/ãれ以å¤?ã—ãªã„] 582 * @see org.opengion.hayabusa.common.SystemData#USE_SQL_INJECTION_CHECK 583 */ 584 public void setQuotCheck( final String flag ) { 585 quotCheck = nval( getRequestParameter( flag ),quotCheck ); 586 } 587 588 /** 589 * ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã® HTMLTagé–‹å§?終äº?–‡å?><) å˜åœ¨ãƒã‚§ãƒ?‚¯ã‚’実施ã™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã? 590 * (åˆæœŸå€¤:USE_XSS_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK}])ã€? 591 * 592 * @og.tag 593 * クãƒã‚¹ã‚µã‚¤ãƒˆã‚¹ã‚¯ãƒªãƒ—ティング(XSS)対ç–ã?ä¸?’°ã¨ã—ã¦less/greater than signã«ã¤ã?¦ã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã? 594 * (><) ãŒå«ã¾ã‚Œã¦ã?Ÿã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹(true)?ã‹ãƒŽã?ãƒã‚§ãƒ?‚¯ã?false)を指定ã—ã¾ã™ã? 595 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®USE_XSS_CHECK[={@og.value org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK}])ã€? 596 * 597 * @og.rev 5.0.0.2 (2009/09/15) æ–°è¦è¿½åŠ? 598 * 599 * @param flag XSSãƒã‚§ãƒ?‚¯ [true:ã™ã‚‹/false:ã—ãªã„] 600 * @see org.opengion.hayabusa.common.SystemData#USE_XSS_CHECK 601 */ 602 public void setXssCheck( final String flag ) { 603 xssCheck = nval( getRequestParameter( flag ),xssCheck ); 604 } 605 606 /** 607 * ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶ã‚ーを指定ã—ã¾ã™ã? 608 * 609 * @og.tag 610 * matchKey.matches( matchVal ) ã®å€¤ãŒã?true ã®å ´åˆã?ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã™ã? 611 * false ã®å ´åˆã?ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã›ã‚“ã€? 612 * value 値ã«ã€{@XXXX} 変数ãŒå«ã¾ã‚Œã¦ã?‚‹å ´åˆã¨åŒã˜åŠ¹æžœã‚’å¾—ã‚‰ã‚Œã¾ã™ã? 613 * 何もæŒ?®šã—ãªã??åˆã?ã¾ãŸã?ã€å¼•æ•°ã?null ã®å ´åˆã?ã€true ã¨åŒã˜ã§ä½¿ç”¨ã•れã¾ã™ã? 614 * 615 * @og.rev 5.1.9.0 (2010/08/01) æ–°è¦è¿½åŠ? 616 * @og.rev 5.2.2.0 (2010/11/01) å»?¢(caseKey,caseVal属æ?を使用ã—ã¦ãã ã•ã„ã€? 617 * 618 * @param mkey String 619 */ 620 // public void setMatchKey( final String mkey ) { 621 // matchKey = nval( getRequestParameter( mkey ),matchKey ); 622 // } 623 624 /** 625 * ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶å€¤ã‚’指定ã—ã¾ã™ã? 626 * 627 * @og.tag 628 * matchKey.matches( matchVal ) ã®å€¤ãŒã?true ã®å ´åˆã?ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã™ã? 629 * false ã®å ´åˆã?ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã›ã‚“ã€? 630 * value 値ã«ã€{@XXXX} 変数ãŒå«ã¾ã‚Œã¦ã?‚‹å ´åˆã¨åŒã˜åŠ¹æžœã‚’å¾—ã‚‰ã‚Œã¾ã™ã? 631 * 何もæŒ?®šã—ãªã??åˆã?ã¾ãŸã?ã€å¼•æ•°ã?null ã®å ´åˆã?ã€true ã¨åŒã˜ã§ä½¿ç”¨ã•れã¾ã™ã? 632 * 633 * @og.rev 5.1.9.0 (2010/08/01) æ–°è¦è¿½åŠ? 634 * @og.rev 5.2.2.0 (2010/11/01) å»?¢(caseKey,caseVal属æ?を使用ã—ã¦ãã ã•ã„ã€? 635 * 636 * @param mval String 637 */ 638 // public void setMatchVal( final String mval ) { 639 // matchVal = nval( getRequestParameter( mval ),matchVal ); 640 // } 641 642 /** 643 * ã‚¿ã‚°ã®åç§°ã‚’ã?è¿”ã—ã¾ã™ã? 644 * 自åˆ??身ã®ã‚¯ãƒ©ã‚¹åよりã?自動的ã«å–り出ã›ãªã?Ÿã‚ã?ã“ã?メソãƒ?ƒ‰ã‚’オーãƒã?ライドã—ã¾ã™ã? 645 * 646 * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦è¿½åŠ? 647 * 648 * @return ã‚¿ã‚°ã®åç§° 649 */ 650 @Override 651 protected String getTagName() { 652 return "and" ; 653 } 654 655 /** 656 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 657 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 658 * 659 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 660 */ 661 @Override 662 public String toString() { 663 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 664 .println( "VERSION" ,VERSION ) 665 .println( "startKey" ,startKey ) 666 .println( "value" ,value ) 667 .println( "instrVals" ,instrVals ) 668 .println( "multi" ,multi ) 669 .println( "quotCheck" ,quotCheck ) 670 .println( "Other..." ,getAttributes().getAttribute() ) 671 .fixForm().toString() ; 672 } 673 }