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.fukurou.util; 017 018 import org.opengion.fukurou.security.HybsCryptography; 019 020 /** 021 * XHTMLTag.java ã¯ã€å?通的ã«ä½¿ç”¨ã•れるHTMLã‚¿ã‚°ã®ç”Ÿæ?メソãƒ?ƒ‰ã‚’集ç´?—ãŸã‚¯ãƒ©ã‚¹ã§ã™ã? 022 * 023 * 全変数?メソãƒ?ƒ‰ã¯ã€public static final 宣è¨?•れã¦ã?¾ã™ã? 024 * 025 * @version 4.0 026 * @author Kazuhiko Hasegawa 027 * @since JDK5.0, 028 */ 029 public final class XHTMLTag { 030 031 /** シスãƒ?ƒ ä¾å˜ã?改行記å·ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? */ 032 public static final String CR = System.getProperty("line.separator"); 033 034 /** ãƒãƒƒãƒ•ã‚¡ã®åˆæœŸå®¹é‡ã‚’通常より若干多ã„ç›®ã«è¨å®šã—ã¾ã™ã?(50) */ 035 public static final int BUFFER_SMALL = 50; 036 037 /** ãƒãƒƒãƒ•ã‚¡ã®åˆæœŸå®¹é‡ã‚’通常より多ã„ç›®ã«è¨å®šã—ã¾ã™ã?(200) */ 038 public static final int BUFFER_MIDDLE = 200; 039 040 /** ãƒãƒƒãƒ•ã‚¡ã®åˆæœŸå®¹é‡ã‚’通常より大å¹?«å¤šã„ç›®ã«è¨å®šã—ã¾ã™ã?(500) */ 041 public static final int BUFFER_LARGE = 500; 042 043 /** URLãƒã‚§ãƒ?‚¯ã‚ー発行用 4.3.7.1 (2009/06/08) */ 044 private static final HybsCryptography HYBS_CRYPTOGRAPHY = new HybsCryptography(); // 4.3.7.0 (2009/06/01) 045 046 /** 047 * BUTTON ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 048 * 049 * @og.rev 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ?を追åŠ? 050 */ 051 private static final String[] 052 BUTTON_KEY = { "type","name","value","onClick" 053 ,"id","class","lang","dir","title","style","xml:lang" 054 ,"disabled","tabindex","accesskey" 055 ,"onBlur","onFocus","ondblClick","onMouseDown","onMouseUp" 056 ,"onMouseMove","onMouseOut","onMouseOver" 057 // 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ? 058 ,"autofocus" 059 }; 060 061 /** 062 * INPUT ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 063 * 064 * @og.rev 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ?を追åŠ? 065 */ 066 private static final String[] 067 INPUT_KEY = { "type","size","maxlength","checked","src" 068 ,"alt","accept","usemap","ismap" 069 ,"id","class","lang","dir","title","style","xml:lang" 070 ,"readonly","disabled","tabindex","accesskey","onClick","onChange" 071 ,"onBlur","onFocus","ondblClick","onMouseDown","onMouseUp" 072 ,"onMouseMove","onMouseOut","onMouseOver" 073 ,"onSelect","onKeydown","onKeypress","onKeyup" 074 // 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ? 075 ,"autocomplete","autofocus","pattern","placeholder","list","min","max","step","required" 076 }; 077 078 /** 079 * TEXTAREA ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 080 * 081 * @og.rev 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ?を追åŠ? 082 */ 083 private static final String[] 084 TEXTAREA_KEY = { "name","rows","cols" 085 ,"id","class","lang","dir","title","style","xml:lang" 086 ,"readonly","disabled","tabindex","accesskey","onClick" 087 ,"onBlur","onFocus","ondblClick","onMouseDown","onMouseUp" 088 ,"onMouseMove","onMouseOut","onMouseOver" 089 ,"onSelect","onKeydown","onKeypress","onKeyup" 090 // 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ? 091 ,"autofocus","placeholder" 092 }; 093 094 /** 095 * LINK ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 096 * 097 */ 098 private static final String[] 099 LINK_KEY = { "type","name","hreflang","rel","rev","charset" 100 ,"target","shape","coords","onClick" 101 ,"id","class","lang","dir","title","style","xml:lang" 102 ,"tabindex","accesskey" 103 ,"onBlur","onFocus","ondblClick","onMouseDown","onMouseUp" 104 ,"onMouseMove","onMouseOut","onMouseOver" 105 }; 106 107 /** 108 * SELECT ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 109 * 110 * @og.rev 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ?を追åŠ? 111 */ 112 private static final String[] 113 SELECT_KEY = { "size","multiple", 114 "id","class","lang","dir","title","style","xml:lang" 115 ,"disabled","tabindex","onClick","onChange" 116 ,"onBlur","onFocus","ondblClick","onMouseDown","onMouseUp" 117 ,"onMouseMove","onMouseOut","onMouseOver" 118 ,"onSelect","onKeydown","onKeypress","onKeyup" 119 // 5.7.1.0 (2013/12/06) HTML5関連ã®å±žæ? 120 ,"autofocus" 121 }; 122 123 /** 124 * OPTION ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 125 * 126 */ 127 private static final String[] 128 OPTION_KEY = { "value","label","selected" 129 ,"id","class","lang","dir","title","style","xml:lang" 130 ,"disabled" 131 }; 132 133 /** 134 * FRAME ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 135 * 136 */ 137 private static final String[] 138 FRAME_KEY = { "name","longdesc","marginwidth","marginheight","noresize" 139 ,"scrolling","frameborder" 140 ,"id","class","title","style" 141 }; 142 143 /** 144 * IMAGE ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 145 * 146 */ 147 private static final String[] 148 IMAGE_KEY = { "src","alt","longdesc","width","height","usemap","ismap","name","onClick" 149 ,"align","border","hspace","vspace" // ã“ã?行ã?éžæŽ¨å¥¨å±žæ?ã§ã™ã? 150 ,"id","class","title","style","lang","dir","xml:lang" 151 ,"onBlur","onFocus","ondblClick","onMouseDown","onMouseUp" 152 ,"onMouseMove","onMouseOut","onMouseOver" 153 }; 154 155 /** 156 * FORM ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 157 * 158 */ 159 private static final String[] 160 FORM_KEY = { "action","method","enctype","accept-charset","accept","name","target" 161 ,"id","class","title","style","lang","dir","xml:lang" 162 }; 163 164 /** 165 * SPAN ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 166 * 167 */ 168 private static final String[] 169 SPAN_KEY = { "id","class","title","style","lang","dir","xml:lang" }; 170 171 /** 172 * PRE ã‚¿ã‚°ã®å±žæ?リストã§ã™ã? 173 * 174 */ 175 private static final String[] 176 PRE_KEY = { "id","class","title","style","lang","dir","xml:lang" }; 177 178 /** 179 * ãƒ?ƒ•ォルトコンストラクターをprivateã«ã—ã¦ã€? 180 * オブジェクトã?生æ?ã‚’ã•ã›ãªã?‚ˆã?«ã™ã‚‹ã€? 181 * 182 */ 183 private XHTMLTag() { } 184 185 /** 186 * ボタンを作æ?ã—ã¾ã™ã? 187 * 188 * <button type="å½¢å¼? name="åå‰" value="é€ä¿¡æ–?? オプション?¥?¥?¥ >ラベル</button> 189 * 190 * <table border="1" frame="box" rules="all" > 191 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 192 * <tr><td>name="åå‰"</td><td>オプション</td><td>LabelResource.properties ã®ã‚ー</td></tr> 193 * <tr><td>type="å½¢å¼?</td><td>å¿??</td><td>submit/reset/button</td></tr> 194 * <tr><td>value="値"</td><td>オプション</td><td>name属æ?ã¨å…±ã«é€ä¿¡ã•れるå?</td></tr> 195 * <tr><td>disabled="disabled"</td><td>オプション</td><td>ボタンを利用ã§ããªã?Š¶æ…‹ã«ã™ã‚‹å ´åˆã«æŒ?®?/td></tr> 196 * <tr><td>tabindex="Tab移動é?"</td><td>オプション</td><td>0??2767ã®ç¯?›²ã§æ•°å—ã§æŒ?®?å°ã•ã??ã«ç§»å‹?</td></tr> 197 * <tr><td>accesskey="ショートカãƒ?ƒˆã‚ー"</td><td>オプション</td><td>æ–?—ã‚»ãƒ?ƒˆä¸ã®?‘æ–‡å—:Windowsã§ã‚れã°Altã‚ーã¨åŒæ™‚使用</td></tr> 198 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 199 * <tr><td>body="表示ã™ã‚‹ã‚¿ã‚°æ–?—å?"</td><td>オリジナル</td><td>ç”»åƒã‚„æ–?—ãªã©ãƒœã‚¿ãƒ³ä¸Šã«è¡¨ç¤ºã•ã›ãŸã„ã‚¿ã‚°ã®æ–?—å?</td></tr> 200 * </table> 201 * 202 * è¨å®šã§ãる属æ? 203 * å½¢å¼ã??? 204 * submit é€ä¿¡(サブミãƒ?ƒˆ) 205 * reset リセãƒ?ƒˆ 206 * button 汎用ボタン 207 * を指定ã—ã¾ã™ã? 208 * 209 * ラベルã«?ŒHTMLãƒ?‚スãƒ?強調æ–?—ãªã©)ã‚’ã?ã‚è¾¼ã‚?“ã¨ãŒå?æ¥ã¾ã™ã? 210 * ã¾ãŸï¼Œã‚¤ãƒ¡ãƒ¼ã‚¸ <img ?¥?¥?¥?¥> を指定ã™ã‚‹ã“ã¨ã‚?å¯èƒ½ã§ã™ã? 211 * disabled="disabled" ã®ã¨ã,ã“ã®ãƒœã‚¿ãƒ³ã®ãƒ??ã‚¿ã¯ã‚µãƒ¼ãƒã?ã«é€ä¿¡ã•れã¾ã›ã‚“ã€? 212 * 属æ?群ã¯,ã‚¿ã‚°ã®ä¸ã«,CSSç‰ã§ä½¿ç”¨ã§ãã‚‹ class="XXX" ãªã©ã® 213 * 汎用属æ?ã‚’è?ç”±ã«ç™»éŒ²ã™ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã? 214 * 215 * @param attri 属æ?群 216 * 217 * @return ボタンタグæ–?—å? 218 */ 219 public static String button( final Attributes attri ) { 220 String checkedType = "|submit|reset|button|"; 221 222 String type = attri.get( "type" ); 223 if( checkedType.indexOf( "|" + type + "|" ) < 0 ) { 224 String errMsg = "button タイプè¨å®šã‚¨ãƒ©ãƒ¼ [" + type + "]"; 225 throw new RuntimeException( errMsg ); 226 } 227 228 String values = attri.getAttribute( BUTTON_KEY ); 229 String body = attri.get( "body" ); 230 if( body == null ) { body = "" ; } 231 232 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 233 rtn.append("<button "); 234 rtn.append( values ); 235 rtn.append( ">" ); 236 rtn.append( body ); 237 rtn.append("</button>"); 238 239 return rtn.toString(); 240 } 241 242 /** 243 * 入力フォーãƒ?‚’作æ?ã—ã¾ã™ã? 244 * 245 * @param attri 属æ?群 246 * 247 * @return 入力フォーãƒ?‚¿ã‚°æ–?—å? 248 * @see #input( Attributes attri,String name,String value,String optAtt ) 249 */ 250 public static String input( final Attributes attri ) { 251 String name = attri.get( "name" ); 252 String value = attri.get( "value" ); 253 String optAttri = attri.get( "optionAttributes" ); 254 255 return input( attri,name,value,optAttri ); 256 } 257 258 /** 259 * 入力フォーãƒ?‚’作æ?ã—ã¾ã™ã? 260 * 261 * <input type="text" name="åå‰" value="é€ä¿¡æ–?? ....> 262 * 263 * <table border="1" frame="box" rules="all" > 264 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 265 * <tr><td>name="åå‰"</td><td>オプション</td><td>LabelResource.properties ã®ã‚ー</td></tr> 266 * <tr><td>type="å½¢å¼?</td><td>å¿??</td><td>text/password/checkbox/radio/submit/reset/button/image/file/hidden</td></tr> 267 * <tr><td>value="値"</td><td>オプション</td><td>name属æ?ã¨å…±ã«é€ä¿¡ã•れるå?</td></tr> 268 * <tr><td>size="30"</td><td>オプション</td><td>inputã‚¿ã‚°ã®å¤§ãã•</td></tr> 269 * <tr><td>maxlength="50"</td><td>オプション</td><td>type属æ?ãŒï½¢text?£,?¢password?£ ã®ã¨ãã?æœ?¤§æ–?—æ•°</td></tr> 270 * <tr><td>checked="checked"</td><td>オプション</td><td>type属æ?ãŒï½¢checkbox?£,?¢radio?£ ã®å ´åˆã«é¸æŠžã•れã¦ã?‚‹çŠ¶æ…‹ã«ã™ã‚‹ã€?/td></tr> 271 * <tr><td>disabled="disabled"</td><td>オプション</td><td>é¸æŠžã‚„å¤‰æ›´ã®æ“作をã§ããªã?Š¶æ…‹ã«ã™ã‚‹å ´åˆã«æŒ?®?/td></tr> 272 * <tr><td>accept="MIMEタイãƒ?</td><td>オプション</td><td>type属æ?ãŒï½¢file?£ã®å ´åˆã«å‡¦ç?¯èƒ½ãªMIMEタイプをæŒ?®?/td></tr> 273 * <tr><td>tabindex="Tab移動é?"</td><td>オプション</td><td>0??2767ã®ç¯?›²ã§æ•°å—ã§æŒ?®?å°ã•ã??ã«ç§»å‹?</td></tr> 274 * <tr><td>accesskey="ショートカãƒ?ƒˆã‚ー"</td><td>オプション</td><td>æ–?—ã‚»ãƒ?ƒˆä¸ã®?‘æ–‡å—:Windowsã§ã‚れã°Altã‚ーã¨åŒæ™‚使用</td></tr> 275 * <tr><td>src="URL"</td><td>オプション</td><td>type属æ?ãŒï½¢image?£ã®å ´åˆé?信ボタンã®ç”»åƒURLを指å®?/td></tr> 276 * <tr><td>alt="代替æ–?—å?"</td><td>オプション</td><td>type属æ?ãŒï½¢image?£ã®å ´åˆã?ç”»åƒãŒè¡¨ç¤ºã§ããªã?¨ãã?代替æ–?—å?を指å®?/td></tr> 277 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 278 * <tr><td>body="表示ã™ã‚‹ã‚¿ã‚°æ–?—å?"</td><td>オリジナル</td><td>ç”»åƒã‚„æ–?—ãªã©ãƒœã‚¿ãƒ³ä¸Šã«è¡¨ç¤ºã•ã›ãŸã„ã‚¿ã‚°ã®æ–?—å?</td></tr> 279 * <tr><td>サãƒã?トå¤?/td><td>未実è£?/td><td>readonly属æ?ã€usemap属æ?ã€ismap属æ?ã€align属æ?</td></tr> 280 * </table> 281 * 282 * è¨å®šã§ãる属æ? 283 * å½¢å¼ã??? 284 * text ?‘行ã?ãƒ?‚ストフィールãƒ? 285 * password パスワード用ãƒ?‚ストフィールãƒ? 286 * checkbox ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹(è¤?•°é¸æŠžå¯) 287 * radio ラジオボタン(è¤?•°é¸æŠžä¸å¯) 288 * submit é€ä¿¡(サブミãƒ?ƒˆ) 289 * reset リセãƒ?ƒˆ 290 * button 汎用ボタン 291 * image イメージã«ã‚ˆã‚‹ç”»åƒã?タン 292 * file é€ä¿¡ãƒ•ァイルã®é¸æŠ? 293 * hidden 表示ã›ãšã«ã‚µãƒ¼ãƒã?ã«é€ä¿¡ã™ã‚‹ã€? 294 * を指定ã—ã¾ã™ã? 295 * 296 * ラジオボタン?ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã§ã‚らã‹ã˜ã‚?ãƒã‚§ãƒ?‚¯ã‚’ã—㦠297 * ãŠããŸã„å ´åˆã?,checked 属æ?ã« "checked" を登録ã—ã¾ã™ã? 298 * ファイルãƒ?‚¤ã‚¢ãƒã‚°ã®å ´åˆã?,attributesã® accept 属æ?ã« "MIMEタイãƒ? 299 * を登録ã—ã¾ã™ã? 300 * 属æ?群ã¯,ã‚¿ã‚°ã®ä¸ã«,CSSç‰ã§ä½¿ç”¨ã§ãã‚‹ class="XXX" ãªã©ã® 301 * æ–?—を自由ã«ç™»éŒ²ã™ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã? 302 * CSSã§ã‚¯ãƒ©ã‚¹ã‚’対å¿?class="XXXX" 303 * タブã§ç§»å‹•é?を指定ã™ã‚?tabindex="タブé?" 304 * ショートカãƒ?ƒˆã‚ーを割り当ã¦ã‚?accesskey="ショートカãƒ?ƒˆã‚ー" 305 * 306 * @param attri 属æ?群 307 * @param name åå‰ 308 * @param value 値 309 * @param optAttri オプションæ–?—å?(タグ属æ?定義ã•れã¦ã?ªã?±žæ?ã®ç™»éŒ²ç”¨æ–?—å?) 310 * 311 * @return 入力フォーãƒ?‚¿ã‚°æ–?—å? 312 */ 313 public static String input( final Attributes attri,final String name,final String value,final String optAttri ) { 314 String values = attri.getAttribute( INPUT_KEY ); 315 316 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 317 rtn.append("<input "); 318 if( name != null ) { rtn.append("name=\"").append( name ).append( "\" " ); } 319 if( value != null ) { rtn.append("value=\"").append( value ).append( "\" " ); } 320 rtn.append( values ); 321 if( optAttri != null ) { 322 rtn.append( " " ); 323 rtn.append( optAttri ); 324 } 325 rtn.append( " />" ); 326 327 return rtn.toString(); 328 } 329 330 /** 331 * 入力フォーãƒ??属æ?æƒ??ã®ã¿ã®æ–?—å?を作æ?ã—ã¾ã™ã? 332 * ã“れã¯ã€name 属æ?ã‚?value 属æ?ãªã©ã€ä¸?ˆ¬ã«éƒ½åº¦å¤‰æ›´ã•れるフィールãƒ? 333 * 以外ã?固定的ãªå±žæ?æƒ??ã‚’ã?å…ˆã«ä½œæ?ã—ã¦ãŠãå ´åˆã«ã€ä½¿ç”¨ã—ã¾ã™ã? 334 * 335 * @param attri 属æ?リスãƒ? 336 * 337 * @return 入力フォーãƒ?‚¿ã‚°ã®å±žæ?æƒ??æ–?—å? 338 */ 339 public static String inputAttri( final Attributes attri ) { 340 return attri.getAttribute( INPUT_KEY ); 341 } 342 343 /** 344 * ãƒ?‚ストエリアã®å±žæ?æƒ??ã®ã¿ã®æ–?—å?を作æ?ã—ã¾ã™ã? 345 * ã“れã¯ã€name 属æ?ã‚?value 属æ?ãªã©ã€ä¸?ˆ¬ã«éƒ½åº¦å¤‰æ›´ã•れるフィールãƒ? 346 * 以外ã?固定的ãªå±žæ?æƒ??ã‚’ã?å…ˆã«ä½œæ?ã—ã¦ãŠãå ´åˆã«ã€ä½¿ç”¨ã—ã¾ã™ã? 347 * 348 * @param attri 属æ?リスãƒ? 349 * 350 * @return ãƒ?‚ストエリアã®å±žæ?æƒ??æ–?—å? 351 */ 352 public static String textareaAttri( final Attributes attri ) { 353 return attri.getAttribute( TEXTAREA_KEY ); 354 } 355 356 /** 357 * プルãƒ?‚¦ãƒ³ç‰ã?メニューã®å±žæ?æƒ??ã®ã¿ã®æ–?—å?を作æ?ã—ã¾ã™ã? 358 * ã“れã¯ã€name 属æ?ã‚?value 属æ?ãªã©ã€ä¸?ˆ¬ã«éƒ½åº¦å¤‰æ›´ã•れるフィールãƒ? 359 * 以外ã?固定的ãªå±žæ?æƒ??ã‚’ã?å…ˆã«ä½œæ?ã—ã¦ãŠãå ´åˆã«ã€ä½¿ç”¨ã—ã¾ã™ã? 360 * 361 * @param attri 属æ?リスãƒ? 362 * 363 * @return プルãƒ?‚¦ãƒ³ç‰ã?メニューã®å±žæ?æƒ??æ–?—å? 364 */ 365 public static String selectAttri( final Attributes attri ) { 366 return attri.getAttribute( SELECT_KEY ); 367 } 368 369 /** 370 * HIDDEN フォーãƒ?‚’作æ?ã—ã¾ã™ã? 371 * 372 * id属æ?ã«ã€name ã¨åŒã˜å€¤ãŒè¨å®šã•れã¾ã™ã? 373 * 374 * @og.rev 5.5.4.0 (2012/07/02) ID属æ?追åŠ? 375 * 376 * @param name フォーãƒ??åå‰ 377 * @param value 値 378 * 379 * @return HIDDENフォーãƒ?‚¿ã‚°æ–?—å? 380 */ 381 public static String hidden( final String name,final String value ) { 382 // StringBuilder rtn = new StringBuilder( BUFFER_SMALL ); 383 384 // rtn.append("<input type=\"hidden\" "); 385 // rtn.append("name=\"" ).append( name ); 386 // rtn.append("\" value=\"").append( value ); 387 // rtn.append( "\" />" ); 388 389 // return rtn.toString(); 390 return hidden(name,value,name); 391 } 392 393 /** 394 * HIDDEN フォーãƒ?‚’作æ?ã—ã¾ã™ã? 395 * 396 * @og.rev 5.5.4.0 (2012/07/02) ID属æ?追åŠ? 397 * 398 * @param name フォーãƒ??åå‰ 399 * @param value 値 400 * @param id フォーãƒ??ID 401 * 402 * @return HIDDENフォーãƒ?‚¿ã‚°æ–?—å? 403 */ 404 public static String hidden( final String name, final String value, final String id ) { 405 StringBuilder rtn = new StringBuilder( BUFFER_SMALL ); 406 407 rtn.append( "<input type=\"hidden\" " ); 408 rtn.append( "name=\"" ).append( name ); 409 rtn.append( "\" value=\"" ).append( value ); 410 rtn.append( "\" id=\"" ).append( id ); 411 rtn.append( "\" />" ); 412 413 return rtn.toString(); 414 } 415 416 /** 417 * ãƒ?‚ストエリアを作æ?ã—ã¾ã™ã? 418 * 419 * <textarea name="åå‰" rows="4" cols="40" ....>é€ä¿¡æ–?—å? </textarea> 420 * 421 * <table border="1" frame="box" rules="all" > 422 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 423 * <tr><td>name="åå‰"</td><td>オプション</td><td>LabelResource.properties ã®ã‚ー</td></tr> 424 * <tr><td>rows="行数"</td><td>オプション</td><td>入力フィールドã?表示行数</td></tr> 425 * <tr><td>cols="å¹?</td><td>オプション</td><td>入力フィールドã?表示å¹?æ–?—æ•°)</td></tr> 426 * <tr><td>disabled="disabled"</td><td>オプション</td><td>é¸æŠžã‚„å¤‰æ›´ã®æ“作をã§ããªã?Š¶æ…‹ã«ã™ã‚‹å ´åˆã«æŒ?®?/td></tr> 427 * <tr><td>tabindex="Tab移動é?"</td><td>オプション</td><td>0??2767ã®ç¯?›²ã§æ•°å—ã§æŒ?®?å°ã•ã??ã«ç§»å‹?</td></tr> 428 * <tr><td>accesskey="ショートカãƒ?ƒˆã‚ー"</td><td>オプション</td><td>æ–?—ã‚»ãƒ?ƒˆä¸ã®?‘æ–‡å—:Windowsã§ã‚れã°Altã‚ーã¨åŒæ™‚使用</td></tr> 429 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 430 * <tr><td>value="値"</td><td>オリジナル</td><td>name属æ?ã¨å…±ã«é€ä¿¡ã•れるå?</td></tr> 431 * <tr><td>body="表示ã™ã‚‹ã‚¿ã‚°æ–?—å?"</td><td>オリジナル</td><td>ç”»åƒã‚„æ–?—ãªã©ãƒœã‚¿ãƒ³ä¸Šã«è¡¨ç¤ºã•ã›ãŸã„ã‚¿ã‚°ã®æ–?—å?</td></tr> 432 * <tr><td>サãƒã?トå¤?/td><td>未実è£?/td><td>readonly属æ?</td></tr> 433 * </table> 434 * 435 * è¨å®šã§ãる属æ? 436 * 437 * 属æ?群ã¯,ã‚¿ã‚°ã®ä¸ã«,CSSç‰ã§ä½¿ç”¨ã§ãã‚‹ class="XXX" ãªã©ã® 438 * æ–?—を自由ã«ç™»éŒ²ã™ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã? 439 * CSSã§ã‚¯ãƒ©ã‚¹ã‚’対å¿?class="XXXX" 440 * タブã§ç§»å‹•é?を指定ã™ã‚?tabindex="タブé?" 441 * ショートカãƒ?ƒˆã‚ーを割り当ã¦ã‚?accesskey="ショートカãƒ?ƒˆã‚ー" 442 * 443 * @param attri 属æ?群 444 * 445 * @return 入力フォーãƒ?‚¿ã‚°æ–?—å? 446 */ 447 public static String textarea( final Attributes attri ) { 448 String values = attri.getAttribute( TEXTAREA_KEY ); 449 String body = attri.get( "body" ); 450 if( body == null ) { body = "" ; } 451 452 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 453 rtn.append("<textarea "); 454 rtn.append( values ); 455 rtn.append( ">" ); 456 rtn.append( body ); 457 rtn.append( "</textarea>" ); 458 459 return rtn.toString(); 460 } 461 462 /** 463 * ペã?ジリンクを作æ?ã—ã¾ã™ã? 464 * 465 * <A href="?µ?²?¬" target="ターゲãƒ?ƒˆå?>ラベル</A> 466 * 467 * <table border="1" frame="box" rules="all" > 468 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 469 * <tr><td>href="URL"</td><td>å¿??</td><td>リンク先ã?URLを指定ã—ã¾ã™ã?</td></tr> 470 * <tr><td>charset="æ–?—ã‚»ãƒ?ƒˆ"</td><td>オプション</td><td>リンク先ã?æ–?—コードセãƒ?ƒˆã‚’指定ã—ã¾ã™ã?</td></tr> 471 * <tr><td>hreflang="è¨?ªžã‚»ãƒ?ƒˆ"</td><td>オプション</td><td>リンク先ã?基本ã¨ãªã‚‹è¨?ªžã‚³ãƒ¼ãƒ‰ã‚’æŒ?®šã—ã¾ã™ã?</td></tr> 472 * <tr><td>type="MIMEタイãƒ?</td><td>オプション</td><td>リンク先ã?MIMEタイプをæŒ?®šã—ã¾ã™ã?</td></tr> 473 * <tr><td>name="åå‰"</td><td>オプション</td><td>ã“ã?è¦ç´?‚’リンクã®åˆ°é”点ã¨ã™ã‚‹ãŸã‚ã®åå‰ã‚’指定ã—ã¾ã™ã?</td></tr> 474 * <tr><td>rel="リンクタイãƒ?</td><td>オプション</td><td>ã“ã?æ–?›¸ã‹ã‚‰ã¿ã?href 属æ?ã§æŒ?®šã•れるリンク先ã¨ã®é–¢ä¿?/td></tr> 475 * <tr><td>rev="リンクタイãƒ?</td><td>オプション</td><td>href 属æ?ã§æŒ?®šã•れるリンク先ã‹ã‚‰ã¿ãŸã?ã“ã?æ–?›¸ã¨ã®é–¢ä¿?/td></tr> 476 * <tr><td>tabindex="Tab移動é?"</td><td>オプション</td><td>0??2767ã®ç¯?›²ã§æ•°å—ã§æŒ?®?å°ã•ã??ã«ç§»å‹?</td></tr> 477 * <tr><td>accesskey="ショートカãƒ?ƒˆã‚ー"</td><td>オプション</td><td>æ–?—ã‚»ãƒ?ƒˆä¸ã®?‘æ–‡å—:Windowsã§ã‚れã°Altã‚ーã¨åŒæ™‚使用</td></tr> 478 * <tr><td>target="フレーãƒ?"</td><td>オプション</td><td>リンク先ã?フレーãƒ?</td></tr> 479 * <tr><td>body="表示ã™ã‚‹ã‚¿ã‚°æ–?—å?"</td><td>オリジナル</td><td>ç”»åƒã‚„æ–?—ãªã©ã‚’リンクã«ã§ãã¾ã™ã?</td></tr> 480 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 481 * <tr><td>サãƒã?トå¤?/td><td>未実è£?/td><td>shape属æ?ã€coords属æ?</td></tr> 482 * </table> 483 * 484 * è¨å®šã§ãる属æ? 485 * 486 * ラベルãªã—ã?å ´å? href属æ?ã® "URL" ãã?ã‚‚ã?を付ã‘ã¾ã™ã? 487 * 488 * target属æ?ã®ãƒ•レーãƒ?㯠489 * 490 * _top フレーãƒ?‚’解除ã—ã¦,リンク先をフレーãƒ??体ã«è¡¨ç¤ºã™ã‚‹ã€? 491 * _parent リンク先を親フレーãƒ?«è¡¨ç¤ºã™ã‚‹ã€? 492 * _self リンク先を自åˆ??身ã«è¡¨ç¤ºã™ã‚‹ã€? 493 * _blank æ–°ã—ã„ウインドウを開ã?¦?Œè¡¨ç¤ºã™ã‚‹ã€? 494 * ãã?ä»? フレーãƒ?½œæ?時ã?åå‰ã§æŒ?®šå¯èƒ½ã€? 495 * 496 * を指定ã—ã¾ã™ã? 497 * ãªã—ã?å ´å?_self (自åˆ??身)を指定ã—ã¾ã™ã? 498 * 499 * リンクメール機è? 500 * URLを,mailto:メールアドレス ã§è¨å®šã™ã‚Œã?,メールé€ä¿¡ãƒ?‚¤ã‚¢ãƒã‚°ã‚? 501 * é–‹ã事ãŒå‡ºæ¥ã¾ã™ã? 502 * ç”»åƒãƒªãƒ³ã‚¯æ©Ÿè? 503 * ç”»åƒã‚’クリãƒ?‚¯ã™ã‚‹ãƒªãƒ³ã‚¯ã¯?Œãƒ©ãƒ™ãƒ«ã®å€‹æ‰€ã« <img>ã‚¿ã‚°ã‚’è¨å®šã—ã¾ã™ã? 504 * 505 * <a href="books.html"><img src="banner.gif" width="468px" height="60px" alt="関連書ç±ç´¹ä»? border="0"></a> 506 * 507 * 属æ?群ã¯,ã‚¿ã‚°ã®ä¸ã«,CSSç‰ã§ä½¿ç”¨ã§ãã‚‹ class="XXX" ãªã©ã® 508 * æ–?—を自由ã«ç™»éŒ²ã™ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã? 509 * CSSã§ã‚¯ãƒ©ã‚¹ã‚’対å¿?class="XXXX" 510 * タブã§ç§»å‹•é?を指定ã™ã‚?tabindex="タブé?" 511 * ショートカãƒ?ƒˆã‚ーを割り当ã¦ã‚?accesskey="ショートカãƒ?ƒˆã‚ー" 512 * 513 * @param attri 属æ?群 514 * 515 * @return ペã?ジリンクタグæ–?—å? 516 */ 517 public static String link( final Attributes attri ) { 518 return link( attri,"" ); 519 } 520 521 /** 522 * ペã?ジリンクを作æ?ã—ã¾ã™ã? 523 * 524 * @param attri 属æ?群 525 * @param urlEncode æ–?—å? ( ?key1=val1&?¥?¥?¥?¥ ã¨ã?†æ–?—å? ç„¡ã?¨ãã? "" ) 526 * 527 * @return ペã?ジリンクタグæ–?—å? 528 */ 529 public static String link( final Attributes attri, final String urlEncode ) { 530 531 String href = addUrlEncode( attri.get( "href" ),urlEncode ); 532 533 String values = attri.getAttribute( LINK_KEY ); 534 String body = attri.get( "body" ); 535 if( body == null ) { body = attri.get( "href" ) ; } 536 537 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 538 rtn.append("<a href=\""); 539 rtn.append( href ); 540 rtn.append( "\" " ); 541 rtn.append( values ); 542 rtn.append( ">" ); 543 rtn.append( body ); 544 rtn.append( "</a>" ); 545 546 return rtn.toString(); 547 } 548 549 /** 550 * xlink å½¢å¼ã?ペã?ジリンクを作æ?ã—ã¾ã™ã? 551 * 552 * 基本çš?«ã¯ã€link ã¨åŒã˜ã§ã™ã?ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æŒ?®šã‚‚ã€href ã§æŒ?®šã—ã¦ãã ã•ã„ã€? 553 * å†?ƒ¨çš?«ã€xlink:href ã«å¤‰æ›ã—ã¾ã™ã? 554 * ã¾ãŸã?URL引数をã?"&" ã§çµåˆã™ã‚‹ã®ã§ã¯ãªãã?"&amp;" ã§çµåˆã•ã›ã¾ã™ã? 555 * ã“れã¯ã€xlink ãã?ã‚‚ã?ãŒã?XML上ã«è¨˜è¿°ã•れãŸå?åˆã«ã€XMLã®ãƒ«ãƒ¼ãƒ«ã§å†åº¦ãƒ‘ã?ス 556 * ã•れる為ã§ã™ã? 557 * 558 * @param attri 属æ?群 559 * @param urlEncode æ–?—å? ( ?key1=val1&?¥?¥?¥?¥ ã¨ã?†æ–?—å? ç„¡ã?¨ãã? "" ) 560 * 561 * @return ペã?ジリンクタグæ–?—å? 562 */ 563 public static String xlink( final Attributes attri, final String urlEncode ) { 564 565 String href = addUrlEncode( attri.get( "href" ),urlEncode,"&" ); 566 567 String values = attri.getAttribute( LINK_KEY ); 568 String body = attri.get( "body" ); 569 if( body == null ) { body = attri.get( "href" ) ; } 570 571 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 572 rtn.append("<a xlink:href=\""); 573 rtn.append( href ); 574 rtn.append( "\" " ); 575 rtn.append( values ); 576 rtn.append( ">" ); 577 rtn.append( body ); 578 rtn.append( "</a>" ); 579 580 return rtn.toString(); 581 } 582 583 /** 584 * メニューを作æ?ã—ã¾ã™ã? 585 * 586 * @param attri 属æ?群 587 * @param opt é¸æŠžè‚¢(オプション) 588 * 589 * @return メニュータグæ–?—å? 590 */ 591 public static String select( final Attributes attri,final Options opt ) { 592 String name = attri.get( "name" ); 593 String optAttri = attri.get( "optionAttributes" ); 594 595 return select( attri,opt,name,optAttri ); 596 } 597 598 /** 599 * メニューを作æ?ã—ã¾ã™ã? 600 * 601 * <select size="行数" name="åå‰" multiple> 602 * <option value="é€ä¿¡æ–?—ï¼?>コメンãƒ?lt;/option> 603 * <option value="é€ä¿¡æ–?—ï¼?>コメンãƒ?lt;/option> 604 * <option value="é€ä¿¡æ–?—ï¼? selected="selected">コメンãƒ?lt;/option> 605 * </select> 606 * 607 * <table border="1" frame="box" rules="all" > 608 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 609 * <tr><td>name="åå‰"</td><td>オプション</td><td>LabelResource.properties ã®ã‚ー</td></tr> 610 * <tr><td>size="行数"</td><td>オプション</td><td>selectè¦ç´?‚’リストã?ãƒ?‚¯ã‚¹ã¨ã—ã¦è¡¨ç¤ºã™ã‚‹å ´åˆã?行数</td></tr> 611 * <tr><td>multiple="multiple"</td><td>オプション</td><td>é¸æŠžè‚¢ã®ä¸ã‹ã‚‰è¤?•°é¸æŠžå?æ¥ã‚‹ã‚ˆã?«ã™ã‚‹ã€?/td></tr> 612 * <tr><td>disabled="disabled"</td><td>オプション</td><td>é¸æŠžã‚„å¤‰æ›´ã®æ“作をã§ããªã?Š¶æ…‹ã«ã™ã‚‹å ´åˆã«æŒ?®?/td></tr> 613 * <tr><td>tabindex="Tab移動é?"</td><td>オプション</td><td>0??2767ã®ç¯?›²ã§æ•°å—ã§æŒ?®?å°ã•ã??ã«ç§»å‹?</td></tr> 614 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 615 * </table> 616 * 617 * 属æ?群ã¯,ã‚¿ã‚°ã®ä¸ã«,CSSç‰ã§ä½¿ç”¨ã§ãã‚‹ class="XXX" ãªã©ã® 618 * æ–?—を自由ã«ç™»éŒ²ã™ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã? 619 * CSSã§ã‚¯ãƒ©ã‚¹ã‚’対å¿?class="XXXX" 620 * 621 * @param attri 属æ?群 622 * @param opt é¸æŠžè‚¢(オプション) 623 * @param name åå‰ 624 * @param optAttri オプション属æ? 625 * 626 * @return メニュータグæ–?—å? 627 */ 628 public static String select( final Attributes attri,final Options opt,final String name,final String optAttri ) { 629 String values = attri.getAttribute( SELECT_KEY ); 630 String options = opt.getOption(); 631 632 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 633 rtn.append("<select "); 634 if( name != null ) { rtn.append("name=\"").append( name ).append( "\" " ); } 635 rtn.append( values ); 636 if( optAttri != null ) { 637 rtn.append( " " ); 638 rtn.append( optAttri ); 639 } 640 rtn.append( ">" ); 641 rtn.append( options ); 642 rtn.append( "</select>" ); 643 644 return rtn.toString(); 645 } 646 647 /** 648 * オプションを作æ?ã—ã¾ã™ã? 649 * 650 * <select size="行数" name="åå‰" multiple> 651 * <option value="é€ä¿¡æ–?—ï¼?>コメンãƒ?lt;/option> 652 * <option value="é€ä¿¡æ–?—ï¼?>コメンãƒ?lt;/option> 653 * <option value="é€ä¿¡æ–?—ï¼? selected="selected">コメンãƒ?lt;/option> 654 * </select> 655 * 656 * <table border="1" frame="box" rules="all" > 657 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 658 * <tr><td>value="値"</td><td>オプション</td><td>é€ä¿¡ã™ã‚‹å€¤</td></tr> 659 * <tr><td>selected="selected"</td><td>オプション</td><td>é¸æŠžè‚¢ã‚’ã‚らã‹ã˜ã‚é¸æŠžã•れãŸçŠ¶æ…‹ã«ã—ã¦ãŠã</td></tr> 660 * <tr><td>disabled="disabled"</td><td>オプション</td><td>é¸æŠžã‚„å¤‰æ›´ã®æ“作をã§ããªã?Š¶æ…‹ã«ã™ã‚‹å ´åˆã«æŒ?®?/td></tr> 661 * <tr><td>body="表示ã™ã‚‹ã‚¿ã‚°æ–?—å?"</td><td>オリジナル</td><td>é¸æŠžè‚¢ã«è¡¨ç¤ºã•ã›ãŸã„ã‚¿ã‚°ã®æ–?—å?</td></tr> 662 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 663 * </table> 664 * 665 * セレクタã¨ã¯?Œãƒªã‚¹ãƒˆã?ãƒ?‚¯ã‚¹ã‚?ƒ¡ãƒ‹ãƒ¥ãƒ¼ãªã©ã® option引数ã«ã‚»ãƒ?ƒˆã™ã‚‹ 666 * è¤?•°ã®ãƒ??ã‚¿ã‚’optionã‚¿ã‚°ã§ãã‚‹ã‚“ã ã‚‚ã?ã§ã™ã? 667 * 668 * @param attri 属æ?群 669 * 670 * @return オプションタグæ–?—å? 671 */ 672 public static String option( final Attributes attri ) { 673 String values = attri.getAttribute( OPTION_KEY ); 674 String body = attri.get( "body" ); 675 if( body == null ) { body = "No Label" ; } 676 677 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 678 rtn.append("<option "); 679 rtn.append( values ); 680 rtn.append( " >" ); 681 rtn.append( body ); 682 rtn.append( "</option>" ); 683 684 return rtn.toString(); 685 } 686 687 /** 688 * フレーãƒ?‚¿ã‚°ã‚’作æ?ã—ã¾ã™ã? 689 * 690 * <frame marginheight="2px" marginwidth="2px" src="query.jsp" name="QUERY" /> 691 * 692 * <table border="1" frame="box" rules="all" > 693 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 694 * <tr><td>src="URL"</td><td>オプション</td><td>フレーãƒ??表示å…?RLを指定ã—ã¾ã™ã?</td></tr> 695 * <tr><td>name="フレーãƒ?"</td><td>オプション</td><td>フレーãƒ?«ä»˜ã‘ã‚‹åå‰ã‚’æŒ?®šã—ã¾ã™ã?</td></tr> 696 * <tr><td>longdesc="URI"</td><td>オプション</td><td>フレーãƒ??詳ã—ã„説明ã?URI</td></tr> 697 * <tr><td>marginwidth="å·¦å³ã®ãƒžã?ジン"</td><td>オプション</td><td>フレーãƒ??ã®å·¦å³ã®ãƒžã?ジンを指定ã—ã¾ã™ã?</td></tr> 698 * <tr><td>marginheight="上下ã?マã?ジン"</td><td>オプション</td><td>フレーãƒ??ã®ä¸Šä¸‹ã?マã?ジンを指定ã—ã¾ã™ã?</td></tr> 699 * <tr><td>noresize="noresize"</td><td>オプション</td><td>フレーãƒ?‚µã‚¤ã‚ºã‚’変更ã§ããªã?‚ˆã?«ã—ã¾ã™ã?</td></tr> 700 * <tr><td>scrolling="スクãƒãƒ¼ãƒ«ã®åˆ¶å¾¡"</td><td>オプション</td><td>yes:スクãƒãƒ¼ãƒ«ãƒã?を表示 no:表示ã—ãªã?auto:å¿?¦ã«å¿œã˜ã¦è¡¨ç¤º(ãƒ?ƒ•ォルãƒ?</td></tr> 701 * <tr><td>frameborder="æž??表示"</td><td>オプション</td><td>0:æž?‚’表示ã—ãªã? 1:æž?‚’表示ã™ã‚‹ã€?ãƒ?ƒ•ォルãƒ?</td></tr> 702 * <tr><td>keys="引数ã«ã‚»ãƒ?ƒˆã™ã‚‹ã‚ー"</td><td>オプション</td><td>URI ã®å¼•æ•°ã«ã‚»ãƒ?ƒˆã™ã‚‹ã‚ーã‚?CSV å½¢å¼ã§ã‚»ãƒ?ƒˆã—ã¾ã™ã?</td></tr> 703 * <tr><td>value="引数ã«ã‚»ãƒ?ƒˆã™ã‚‹å€¤"</td><td>オプション</td><td>URI ã®å¼•æ•°ã«ã‚»ãƒ?ƒˆã™ã‚‹å€¤ã‚?CSV å½¢å¼ã§ã‚»ãƒ?ƒˆã—ã¾ã™ã?</td></tr> 704 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style</td></tr> 705 * </table> 706 * 707 * è¨å®šã§ãる属æ? 708 * 709 * scrolling属æ? 710 * 711 * yes:常ã«ã‚¹ã‚¯ãƒãƒ¼ãƒ«ãƒã?を表示 712 * no:常ã«ã‚¹ã‚¯ãƒãƒ¼ãƒ«ãƒã?を表示ã—ãªã? 713 * auto:å¿?¦ã«å¿œã˜ã¦ã‚¹ã‚¯ãƒãƒ¼ãƒ«ãƒã?を表示(ãƒ?ƒ•ォルãƒ? 714 * 715 * を指定ã—ã¾ã™ã? 716 * 717 * frameborder属æ? 718 * 719 * 0:æž?‚’表示ã—ãªã? 720 * 1:æž?‚’表示ã™ã‚‹ã€?ãƒ?ƒ•ォルãƒ? 721 * 722 * を指定ã—ã¾ã™ã? 723 * 724 * 属æ?群ã¯,ã‚¿ã‚°ã®ä¸ã«,CSSç‰ã§ä½¿ç”¨ã§ãã‚‹ class="XXX" ãªã©ã® 725 * æ–?—を自由ã«ç™»éŒ²ã™ã‚‹äº‹ãŒå‡ºæ¥ã¾ã™ã? 726 * CSSã§ã‚¯ãƒ©ã‚¹ã‚’対å¿?class="XXXX" 727 * 728 * @param attri 属æ?群 729 * 730 * @return フレーãƒ?‚¿ã‚°æ–?—å? 731 */ 732 public static String frame( final Attributes attri ) { 733 return frame( attri,"" ); 734 } 735 736 /** 737 * フレーãƒ?‚¿ã‚°ã‚’作æ?ã—ã¾ã™ã? 738 * 739 * @param attri 属æ?群 740 * @param urlEncode æ–?—å? ( ?key1=val1&?¥?¥?¥?¥ ã¨ã?†æ–?—å? ç„¡ã?¨ãã? "" ) 741 * 742 * @return フレーãƒ?‚¿ã‚°æ–?—å? 743 */ 744 public static String frame( final Attributes attri,final String urlEncode ) { 745 746 String src = addUrlEncode( attri.get( "src" ),urlEncode ); 747 String values = attri.getAttribute( FRAME_KEY ); 748 749 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 750 rtn.append("<frame src=\""); 751 rtn.append( src ); 752 rtn.append( "\" " ); 753 rtn.append( values ); 754 rtn.append( " />" ); 755 756 return rtn.toString(); 757 } 758 759 /** 760 * URLエンコード文å—å?を作æ?ã—ã¾ã™ã? 761 * エンコードã™ã¹ãæ–‡å—å?ãŒç„¡ã??åˆã?, ?ストリング("") ã‚’è¿”ã—ã¾ã™ã? 762 * エンコード文å—å?ãŒã‚ã‚‹å?åˆã?, "?KEY1=VAL1&KEY2=VAL2&?¥?¥?¥" ã¨ã?†æ–?—å?ã‚? 763 * è¿”ã—ã¾ã™ã? 764 * ã¤ã¾ã‚Šã?ã©ã¡ã‚‰ã?ケースã§ã‚‚ã?URI 㫠連çµã•ã›ã‚Œã°ã‚ˆã„ã“ã¨ã«ãªã‚Šã¾ã™ã? 765 * 766 * @param keys URLã®å¼•æ•°ã¨ãªã‚‹ã‚ー群 767 * @param values URLã®å¼•æ•°ã¨ãªã‚‹å?群 768 * 769 * @return URLエンコード文å—å? 770 */ 771 public static String urlEncode( final String keys,final String values ) { 772 return urlEncode( keys,values,"&" ); 773 } 774 775 /** 776 * URLエンコード文å—å?を作æ?ã—ã¾ã™ã? 777 * エンコードã™ã¹ãæ–‡å—å?ãŒç„¡ã??åˆã?, ?ストリング("") ã‚’è¿”ã—ã¾ã™ã? 778 * エンコード文å—å?ãŒã‚ã‚‹å?åˆã?, "?KEY1=VAL1&KEY2=VAL2&?¥?¥?¥" ã¨ã?†æ–?—å?ã‚? 779 * è¿”ã—ã¾ã™ã? 780 * ã¤ã¾ã‚Šã?ã©ã¡ã‚‰ã?ケースã§ã‚‚ã?URI 㫠連çµã•ã›ã‚Œã°ã‚ˆã„ã“ã¨ã«ãªã‚Šã¾ã™ã? 781 * 782 * @param keys URLã®å¼•æ•°ã¨ãªã‚‹ã‚ー群 783 * @param values URLã®å¼•æ•°ã¨ãªã‚‹å?群 784 * @param join URLã®å¼•数群をé?çµã•ã›ã‚‹æ–?—å? 785 * 786 * @return URLエンコード文å—å? 787 */ 788 public static String urlEncode( final String keys,final String values,final String join ) { 789 if( keys == null || values == null ) { return ""; } 790 791 String[] key = StringUtil.csv2Array( keys ); 792 String[] val = StringUtil.csv2Array( values ); 793 794 return ( urlEncode( key,val,join ) ); 795 } 796 797 /** 798 * URLエンコード文å—å?を作æ?ã—ã¾ã™ã? 799 * エンコードã™ã¹ãæ–‡å—å?ãŒç„¡ã??åˆã?, ?ストリング("") ã‚’è¿”ã—ã¾ã™ã? 800 * エンコード文å—å?ãŒã‚ã‚‹å?åˆã?, "?KEY1=VAL1&KEY2=VAL2&?¥?¥?¥" ã¨ã?†æ–?—å?ã‚? 801 * è¿”ã—ã¾ã™ã? 802 * ã¤ã¾ã‚Šã?ã©ã¡ã‚‰ã?ケースã§ã‚‚ã?URI 㫠連çµã•ã›ã‚Œã°ã‚ˆã„ã“ã¨ã«ãªã‚Šã¾ã™ã? 803 * 804 * @param key URLã®å¼•æ•°ã¨ãªã‚‹ã‚ーã®é…å? 805 * @param val URLã®å¼•æ•°ã¨ãªã‚‹å?ã®é…å? 806 * 807 * @return URLエンコード文å—å? 808 */ 809 public static String urlEncode( final String[] key,final String[] val ) { 810 return urlEncode( key,val,"&" ); 811 } 812 813 /** 814 * URLエンコード文å—å?を作æ?ã—ã¾ã™ã? 815 * エンコードã™ã¹ãæ–‡å—å?ãŒç„¡ã??åˆã?, ?ストリング("") ã‚’è¿”ã—ã¾ã™ã? 816 * エンコード文å—å?ãŒã‚ã‚‹å?åˆã?, "?KEY1=VAL1&KEY2=VAL2&?¥?¥?¥" ã¨ã?†æ–?—å?ã‚? 817 * è¿”ã—ã¾ã™ã? 818 * ã¤ã¾ã‚Šã?ã©ã¡ã‚‰ã?ケースã§ã‚‚ã?URI 㫠連çµã•ã›ã‚Œã°ã‚ˆã„ã“ã¨ã«ãªã‚Šã¾ã™ã? 819 * 820 * @og.rev 4.3.3.3 (2008/10/22) valã«å¯¾ã—ã¦å‰¯ä½œç”¨ã‚’åŠã¼ã•ãªã?‚ˆã?«ä¿®æ£ 821 * 822 * @param key URLã®å¼•æ•°ã¨ãªã‚‹ã‚ーã®é…å? 823 * @param val URLã®å¼•æ•°ã¨ãªã‚‹å?ã®é…å? 824 * @param join URLã®å¼•数群をé?çµã•ã›ã‚‹æ–?—å? 825 * 826 * @return URLエンコード文å—å? 827 */ 828 public static String urlEncode( final String[] key,final String[] val,final String join ) { 829 if( key == null || key.length == 0 || val == null || val.length == 0 ) { 830 return ""; 831 } 832 else if( key.length != val.length ) { 833 String errMsg = "urlEncode ã®ã‚ーã¨ãƒãƒªãƒ¥ãƒ¼ã®å€‹æ•°ãŒç•°ãªã‚Šã¾ã™ã?" + CR 834 + "key.length=[" + key.length + "] val.length=[" + val.length + "]"; 835 throw new RuntimeException( errMsg ); 836 } 837 838 // 4.3.3.3 (2008/10/22) 839 String[] tval = new String[val.length]; 840 841 for( int i=0; i<val.length; i++ ) { 842 if( key[i] == null || key[i].length() == 0 ) { return ""; } 843 if( val[i] == null || val[i].length() == 0 ) { tval[i] = ""; } 844 else if( val[i].charAt(0) == '[' ) { // 暫定対å¿? 845 tval[i] = val[i]; 846 } 847 else { 848 tval[i] = StringUtil.urlEncode( val[i] ); 849 } 850 // else if( val[i].charAt(0) != '[' ) { // 暫定対å¿? 851 // tval[i] = StringUtil.urlEncode( val[i] ); 852 // } 853 // else { 854 // tval[i] = val[i]; 855 // } 856 } 857 858 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 859 860 rtn.append( key[0] ).append( "=" ).append( tval[0] ); 861 for( int i=1; i<key.length; i++) { 862 rtn.append( join ); 863 rtn.append( key[i] ).append( "=" ).append( tval[i] ); 864 } 865 return rtn.toString(); 866 } 867 868 /** 869 * URLæ–?—å?ã«ã€URLエンコード文å—å?ã‚’é?çµã—ã¾ã™ã? 870 * 871 * URLæ–?—å?ä¸ã«ã™ã§ã« "?" æ–?—ãŒå˜åœ¨ã™ã‚‹å ´åˆã?ã€URLエンコードå?ã® 872 * æ–?—å?ã¨ã¯ã€?"&" ã§é€£çµã—ã¾ã™ã? 873 * é€?«ã€??" ãŒå˜åœ¨ã—ãªã‘れã°ã€??" ã§é€£çµã—ã¾ã™ã? 874 * URLエンコード文å—å?ã?null ã®å ´åˆã?ã€??çµã—ã¾ã›ã‚“ã€? 875 * 876 * @param url URLæ–?—å? 877 * @param encode URLエンコード文å—å? 878 * 879 * @return é€£çµæ–‡å—å? 880 */ 881 public static String addUrlEncode( final String url,final String encode ) { 882 return addUrlEncode( url,encode,"&" ); 883 } 884 885 /** 886 * URLæ–?—å?ã«ã€URLエンコード文å—å?ã‚’é?çµã—ã¾ã™ã? 887 * 888 * URLæ–?—å?ä¸ã«ã™ã§ã« "?" æ–?—ãŒå˜åœ¨ã™ã‚‹å ´åˆã?ã€URLエンコードå?ã® 889 * æ–?—å?ã¨ã¯ã€?join (ä¾?"&" ) ã§é€£çµã—ã¾ã™ã? 890 * é€?«ã€??" ãŒå˜åœ¨ã—ãªã‘れã°ã€??" ã§é€£çµã—ã¾ã™ã? 891 * URLエンコード文å—å?ã?null ã®å ´åˆã?ã€??çµã—ã¾ã›ã‚“ã€? 892 * 連çµã™ã‚‹ã?encode æ–?—å?ã®å…ˆé?ãŒã?join æ–?—å?ã®å ´åˆã?ãã?ã¾ã¾é€£çµã—ã¾ã™ã? 893 * å…ˆé?ãŒã?ãã†ã§ãªã??åˆã?ã€join æ–?—å?ã§é€£çµã—ã¾ã™ã? 894 * "?" ãŒå˜åœ¨ã›ãšã€encode æ–?—å?ã®å…ˆé?ãŒã?join æ–?—å?ã®å ´åˆã?ã€ã? 895 * encode æ–?—å?ã®å…ˆé?ã‚’å–り除ã?¦ã€??" ã§é€£çµã—ã¾ã™ã? 896 * 897 * 例ï¼? 898 * â‘? abc.html key1=val1&key2=val2 â‡?abc.html?key1=val1&key2=val2 899 * â‘¡?Žabc.html &key1=val1&key2=val2 â‡?abc.html?key1=val1&key2=val2 900 * â‘¢?Žabc.html?key1=val1 key2=val2 â‡?abc.html?key1=val1&key2=val2 901 * â‘£?Žabc.html?key1=val1 &key2=val2 â‡?abc.html?key1=val1&key2=val2 902 * 903 * @og.rev 5.2.1.0 (2010/10/01) urlãŒnullã®å ´åˆã«ã€NullPointerExceptionãŒç™ºç”Ÿã™ã‚‹ãƒã‚°ã‚’ä¿®æ£ 904 * 905 * @param url URLæ–?—å? 906 * @param encode URLエンコード文å—å? 907 * @param join URLã®å¼•数群をé?çµã•ã›ã‚‹æ–?—å? 908 * 909 * @return é€£çµæ–‡å—å? 910 */ 911 public static String addUrlEncode( final String url,final String encode,final String join ) { 912 // 5.2.1.0 (2010/10/01) urlãŒnullã®å ´åˆã«ã€NullPointerExceptionãŒç™ºç”Ÿã™ã‚‹ãƒã‚°ã‚’ä¿®æ£ 913 String tmpUrl = ( url == null ? "" : url ); 914 915 if( encode == null || encode.length() == 0 ) { return tmpUrl; } 916 917 final String rtn ; 918 if( tmpUrl.indexOf( '?' ) < 0 ) { 919 if( encode.startsWith( join ) ) { 920 rtn = tmpUrl + "?" + encode.substring(join.length()); // â‘¡ 921 } 922 else { 923 rtn = tmpUrl + "?" + encode; // â‘? 924 } 925 } 926 else { 927 if( encode.startsWith( join ) ) { 928 rtn = tmpUrl + encode; // â‘£ 929 } 930 else { 931 rtn = tmpUrl + join + encode; // â‘¢ 932 } 933 } 934 return rtn ; 935 } 936 937 /** 938 * æŒ?®šä½ç½®ã«ç”»åƒã‚’é…ç½®ã—ã¾ã™ã? 939 * 940 * @param attri 属æ?群 941 * 942 * @return イメージタグæ–?—å? 943 */ 944 public static String img( final Attributes attri ) { 945 String values = attri.getAttribute( IMAGE_KEY ); 946 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 947 rtn.append( "<img " ); 948 rtn.append( values ); 949 rtn.append( " />" ); 950 951 return rtn.toString(); 952 } 953 954 /** 955 * フォーãƒ?‚’作æ?ã—ã¾ã™ã? 956 * 957 * <form action="URI" method="HTTPメソãƒ?ƒ‰" enctype="MIMEタイãƒ? target="フレーãƒ?" ?¥?¥?¥ >フォーãƒ??lt;/form> 958 * 959 * <table border="1" frame="box" rules="all" > 960 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 961 * <tr><td>action="URI"</td><td>å¿??</td><td>é€ä¿¡ã•れãŸãƒ•ォーãƒ?ƒ‡ãƒ¼ã‚¿ã‚’å?ç?™ã‚‹ã?ãƒã‚°ãƒ©ãƒ?¼µ?²?©</td></tr> 962 * <tr><td>method="HTTPメソãƒ?ƒ‰"</td><td>オプション</td><td>get/post</td></tr> 963 * <tr><td>enctype="MIMEタイãƒ?</td><td>オプション</td><td>フォーãƒ?ƒ‡ãƒ¼ã‚¿é€ä¿¡æ™‚ã?MIMEタイãƒ?/td></tr> 964 * <tr><td>accept-charset="æ–?—ã‚»ãƒ?ƒˆ"</td><td>オプション</td><td>ãƒ??ã‚¿ã¨ã—ã¦å—付å¯èƒ½ãªæ–?—ã‚»ãƒ?ƒˆã®æŒ?®?/td></tr> 965 * <tr><td>accept="MIMEタイãƒ?</td><td>オプション</td><td>ãƒ??ã‚¿ã¨ã—ã¦å‡¦ç?¯èƒ½ãªMIMEタイプをæŒ?®?/td></tr> 966 * <tr><td>name="åå‰"</td><td>オプション</td><td>スクリプトç‰ã‹ã‚‰å‚ç…§ã™ã‚‹å ´åˆã?åå‰</td></tr> 967 * <tr><td>target="フレーãƒ?"</td><td>オプション</td><td>フォーãƒ?‚’é€ä¿¡ã—ãŸçµæžœã‚’表示ã•ã›ã‚‹ãƒ•レーãƒ?/td></tr> 968 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 969 * <tr><td>body="フォーãƒ?‰ã?æ–?—å?"</td><td>å¿??</td><td>input ç‰ã?フォーãƒ?¦ç´?/td></tr> 970 * </table> 971 * 972 * @param attri 属æ?群 973 * 974 * @return フォーãƒ?‚¿ã‚°æ–?—å? 975 */ 976 public static String form( final Attributes attri ) { 977 String values = attri.getAttribute( FORM_KEY ); 978 String body = attri.get( "body" ); 979 if( body == null ) { body = "" ; } 980 981 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 982 rtn.append("<form "); 983 rtn.append( values ); 984 rtn.append( ">" ); 985 rtn.append( CR ); 986 rtn.append( body ); 987 rtn.append( CR ); 988 rtn.append("</form>"); 989 990 return rtn.toString(); 991 } 992 993 /** 994 * 汎用インラインè¦ç´?SPAN)を作æ?ã—ã¾ã™ã? 995 * 996 * <span class="XXXX" ?¥?¥?¥ >ãƒ?‚ストç?lt;/span> 997 * 998 * <table border="1" frame="box" rules="all" > 999 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 1000 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 1001 * <tr><td>body="ãƒ?‚ストç‰ã?æ–?—å?"</td><td>オプション</td><td>ã“ã?ãƒ?‚ストを修飾ã—ã¾ã™ã?</td></tr> 1002 * </table> 1003 * 1004 * @param attri 属æ?群 1005 * 1006 * @return SPANã‚¿ã‚°æ–?—å? 1007 */ 1008 public static String span( final Attributes attri ) { 1009 String values = attri.getAttribute( SPAN_KEY ); 1010 1011 String optAttri = attri.get( "optionAttributes" ); 1012 String body = attri.get( "body" ); 1013 if( body == null ) { body = "" ; } 1014 1015 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 1016 rtn.append("<span "); 1017 rtn.append( values ); 1018 if( optAttri != null ) { 1019 rtn.append( " " ); 1020 rtn.append( optAttri ); 1021 } 1022 rtn.append( ">" ); 1023 rtn.append( body ); 1024 rtn.append( "</span>" ); 1025 1026 return rtn.toString(); 1027 } 1028 1029 /** 1030 * 整形済ã¿ãƒ?‚スãƒ?PRE)を作æ?ã—ã¾ã™ã? 1031 * 1032 * <pre class="XXXX" ?¥?¥?¥ >ãƒ?‚ストç?lt;/pre> 1033 * 1034 * <table border="1" frame="box" rules="all" > 1035 * <caption>Attributes ã«è¨å®šã§ãる属æ?</caption> 1036 * <tr><td>汎用属æ?</td><td>オプション</td><td>class,id,title,style,lang,dir,xml:lang</td></tr> 1037 * <tr><td>body="ãƒ?‚ストç‰ã?æ–?—å?"</td><td>オプション</td><td>ã“ã?ãƒ?‚ストを修飾ã—ã¾ã™ã?</td></tr> 1038 * </table> 1039 * 1040 * @param attri 属æ?群 1041 * 1042 * @return PREã‚¿ã‚°æ–?—å? 1043 */ 1044 public static String pre( final Attributes attri ) { 1045 String values = attri.getAttribute( PRE_KEY ); 1046 1047 String optAttri = attri.get( "optionAttributes" ); 1048 String body = attri.get( "body" ); 1049 if( body == null ) { body = "" ; } 1050 1051 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 1052 rtn.append("<pre "); 1053 rtn.append( values ); 1054 if( optAttri != null ) { 1055 rtn.append( " " ); 1056 rtn.append( optAttri ); 1057 } 1058 rtn.append( ">" ); 1059 rtn.append( body ); 1060 rtn.append( "</pre>" ); 1061 1062 return rtn.toString(); 1063 } 1064 1065 /** 1066 * URLãƒã‚§ãƒ?‚¯ç”¨ã®ã‚ーを返ã—ã¾ã™ã? 1067 * 1068 * å¼•æ•°ã«æŒ?®šã•れãŸhrefã«å¯¾ã—ã¦ã€æ™‚é–“ã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã‚’ä»˜åŠ ã—ãŸæš—å·åŒ–æ–‡å—å?ã‚? 1069 * 引数ã«è¿½åŠ?—ã¾ã™ã? 1070 * 1071 * æš—å·åŒ–ã?ã€org.opengion.fukurou.util.HybsCryptographyを使用ã—ã¾ã™ã? 1072 * æš—å·åŒ–ã‚’è¡Œã†æ–?—å?ã®ãƒ•ォーマットã?ã€[href],time=[checkTime],userid=[loginUser]ã§ã™ã? 1073 * 1074 * @og.rev 4.3.7.1 (2009/06/08) æ–°è¦è¿½åŠ? 1075 * @og.rev 4.3.7.4 (2009/07/01) 循環å‚ç?ã‚’è§£æ¶? 1076 * @og.rev 5.8.8.0 (2015/06/05) ã‚ーæŒ?®šå¯¾å¿œã§åˆ¥ãƒ¡ã‚½ãƒ?ƒ‰ã«å‡¦ç?‚’å§”è² 1077 * 1078 * @param href ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®URL 1079 * @param key ãƒã‚§ãƒ?‚¯ã‚ーã®ãƒ‘ラメーターã‚ー 1080 * @param userid ユーザーID 1081 * @param time 有効時間 1082 * 1083 * @return ãƒã‚§ãƒ?‚¯ã‚ー 1084 * @see org.opengion.fukurou.security.HybsCryptography 1085 */ 1086 public static String addURLCheckKey( final String href, final String key, final String userid, final long time ) { 1087 // String checkKey = href; 1088 // checkKey = checkKey.replace( "../", "" ); 1089 1090 // checkKey = checkKey + ",time=" + time + ",userid=" + userid; 1091 // checkKey = HYBS_CRYPTOGRAPHY.encrypt( checkKey ); 1092 // return addUrlEncode( href, key + "=" + checkKey ); 1093 1094 return addURLCheckKey( href, key, userid, time, null ); 1095 } 1096 1097 /** 1098 * URLãƒã‚§ãƒ?‚¯ç”¨ã®ã‚ーを返ã—ã¾ã™ã? 1099 * 1100 * å¼•æ•°ã«æŒ?®šã•れãŸhrefã«å¯¾ã—ã¦ã€æ™‚é–“ã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã‚’ä»˜åŠ ã—ãŸæš—å·åŒ–æ–‡å—å?ã‚? 1101 * 引数ã«è¿½åŠ?—ã¾ã™ã? 1102 * 1103 * æš—å·åŒ–ã?ã€org.opengion.fukurou.util.HybsCryptographyを使用ã—ã¾ã™ã? 1104 * cryptを渡ã—ãŸå ´åˆã?ãã?ã‚ーを利用ã—ã¦å¤‰æ›ã‚’ã‹ã‘ã¾ã™ãŒã€NULLã®å ´åˆã?標準ã‚ãƒ¼ã§æš—å·åŒ–ã•れã¾ã™ã? 1105 * æš—å·åŒ–ã‚’è¡Œã†æ–?—å?ã®ãƒ•ォーマットã?ã€[href],time=[checkTime],userid=[loginUser]ã§ã™ã? 1106 * 1107 * @og.rev 5.8.8.0 (2015/06/05) æ–°è¦ä½œæ? 1108 * 1109 * @param href ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®URL 1110 * @param key ãƒã‚§ãƒ?‚¯ã‚ーã®ãƒ‘ラメーターã‚ー 1111 * @param userid ユーザーID 1112 * @param time 有効時間 1113 * @param crypt æš—å·åŒ–クラス 1114 * 1115 * @return ãƒã‚§ãƒ?‚¯ã‚ー 1116 * @see org.opengion.fukurou.security.HybsCryptography 1117 */ 1118 public static String addURLCheckKey( final String href, final String key, final String userid, final long time, final HybsCryptography crypt ) { 1119 String checkKey = href; 1120 1121 checkKey = checkKey + ",time=" + time + ",userid=" + userid; 1122 1123 if( crypt == null ){ 1124 checkKey = HYBS_CRYPTOGRAPHY.encrypt( checkKey ); 1125 } 1126 else{ 1127 checkKey = crypt.encrypt( checkKey ); 1128 } 1129 1130 return addUrlEncode( href, key + "=" + checkKey ); 1131 } 1132 1133 /** 1134 * Aã‚¿ã‚°ã®æ–?—å?ã‚’è§£æžã—ã¦ã€href属æ?ã«URLãƒã‚§ãƒ?‚¯ç”¨ã®æš—å·åŒ–æ–‡å—å?ã‚’ä»˜åŠ ã—ãŸå½¢ã§ã€? 1135 * Aã‚¿ã‚°ã‚’å?構築ã—ã€è¿”ã—ã¾ã™ã? 1136 * 1137 * @og.rev 4.3.7.1 (2009/06/08) æ–°è¦è¿½åŠ? 1138 * @og.rev 4.3.7.4 (2009/07/01) 循環å‚ç?ã‚’è§£æ¶? 1139 * @og.rev 5.8.8.0 (2015/06/05) ã‚ーæŒ?®šå¯¾å¿œã§åˆ¥ãƒ¡ã‚½ãƒ?ƒ‰ã«å‡¦ç?‚’å§”è² 1140 * 1141 * @param tag Aã‚¿ã‚°æ–?—å? 1142 * @param key ãƒã‚§ãƒ?‚¯ã‚ーã®ãƒ‘ラメーターã‚ー 1143 * @param userid ユーザーID 1144 * @param time 有効時間 1145 * 1146 * @return URLãƒã‚§ãƒ?‚¯ã‚ーãŒä»˜åŠ ã•れãŸAã‚¿ã‚°æ–?—å? 1147 */ 1148 public static String embedURLCheckKey( final String tag, final String key, final String userid, final long time ) { 1149 // String rtn = tag; 1150 // int hrefStr = rtn.indexOf( "href=\"" ); 1151 // if( hrefStr >= 0 ) { 1152 // int hrefEnd = rtn.indexOf( "\"",hrefStr + 6 ); 1153 // if( hrefEnd >= 0 ) { 1154 // String href = rtn.substring( hrefStr + 6, hrefEnd ); 1155 // href = XHTMLTag.addURLCheckKey( href, key, userid, time ); 1156 // rtn = rtn.substring( 0, hrefStr ) + "href=\"" + href + rtn.substring( hrefEnd ); 1157 // } 1158 // } 1159 // return rtn; 1160 return embedURLCheckKey( tag, key, userid, time, null ); 1161 } 1162 1163 /** 1164 * Aã‚¿ã‚°ã®æ–?—å?ã‚’è§£æžã—ã¦ã€href属æ?ã«URLãƒã‚§ãƒ?‚¯ç”¨ã®æš—å·åŒ–æ–‡å—å?ã‚’ä»˜åŠ ã—ãŸå½¢ã§ã€? 1165 * Aã‚¿ã‚°ã‚’å?構築ã—ã€è¿”ã—ã¾ã™ã? 1166 * 1167 * @og.rev 5.8.8.0 (2015/06/05) æ–°è¦ä½œæ? 1168 * 1169 * @param tag Aã‚¿ã‚°æ–?—å? 1170 * @param key ãƒã‚§ãƒ?‚¯ã‚ーã®ãƒ‘ラメーターã‚ー 1171 * @param userid ユーザーID 1172 * @param time 有効時間 1173 * @param crypt æš—å·åŒ–クラス 1174 * 1175 * @return URLãƒã‚§ãƒ?‚¯ã‚ーãŒä»˜åŠ ã•れãŸAã‚¿ã‚°æ–?—å? 1176 */ 1177 public static String embedURLCheckKey( final String tag, final String key, final String userid, final long time, final HybsCryptography crypt ) { 1178 String rtn = tag; 1179 int hrefStr = rtn.indexOf( "href=\"" ); 1180 if( hrefStr >= 0 ) { 1181 int hrefEnd = rtn.indexOf( "\"",hrefStr + 6 ); 1182 if( hrefEnd >= 0 ) { 1183 String href = rtn.substring( hrefStr + 6, hrefEnd ); 1184 href = XHTMLTag.addURLCheckKey( href, key, userid, time, crypt ); 1185 rtn = rtn.substring( 0, hrefStr ) + "href=\"" + href + rtn.substring( hrefEnd ); 1186 } 1187 } 1188 return rtn; 1189 } 1190 }