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.fukurou.util.XHTMLTag; 020 021 import org.opengion.fukurou.util.StringUtil; 022 023 /** 024 * 【?力??行?入力が可能な?スト?力フィールドを作?するHTML拡張タグです? 025 * 026 * name 属?に ラベルリソース のキーを与えることで?ロケールにあわせたリソースを使用して? 027 * 画面に表示します? 028 * ロケールは、ユーザー??の lang 属?を?期?で使用し? セ?されて???合?? 029 * リクエスト情報のロケールから取得します? 030 * ラベル部?入力フィールド部???ブルタグの <td> により左右に?されます? 031 * HTML 表示時?、前後に<tr>タグで囲って?整形できます? 032 * 033 * @og.formSample 034 * ●形式?lt;og:queryOption > 035 * SELECT? 036 * </og:queryOption > 037 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま? 038 * 039 * ●Tag定義?? 040 * <og:textarea 041 * name ○?HTML】名前を?しま???)? 042 * lbl 【TAG】ラベルリソースのラベルIDを指定しま? 043 * rows 【HTML】高さ(行数)を指定しま? 044 * cols 【HTML】横?カラ?)を指定しま? 045 * must 【TAG】??入力を表す色に変えるかど?[true/false]を指定しま?初期値:false) 046 * mustAny 【TAG】選択??入?どれかひとつ??)を表す色[true/mustAny/そ?他]を指定しま?初期値:無?? 047 * id 【HTML】要?対して固有?名前(id)をつける場合に設定しま? 048 * lang 【HTML】要???と他?属?値の??lang,xml:lang)を指定しま? 049 * dir 【HTML】文字表記?方?dir)を指定しま? 050 * title 【HTML】要?対する補足?報(title)を設定しま? 051 * style 【HTML】この要?対して適用させるスタイルシー?style)を設定しま? 052 * readonly 【TAG】その部品に対して変更が?来な??(readonly)?しま?サーバ?に送信され? 053 * disabled 【TAG】その部品に対して?択や変更が?来な??(disabled)?しま?サーバ?に送信されな? 054 * tabindex 【HTML】タブ?移動?(tabindex)を指定しま?0 ??32767) 055 * accesskey 【HTML】アクセスキー(alt+キーで直接??を割り当てま? 056 * clazz 【HTML】要?対して class 属?を設定しま? 057 * language 【TAG】タグ?で使用する?コード[ja/en/zh/…]を指定しま? 058 * onClick 【HTML】JavaScriptのイベン?onClick を設定しま??onClick="renew('query.jsp','QUERY');") 059 * onBlur 【HTML】JavaScriptのイベン?onBlur を設定しま??onBlur="this.value=value.toUpperCase();") 060 * onFocus 【HTML】JavaScriptのイベン?onFocus を設定しま? 061 * ondblClick 【HTML】JavaScriptのイベン?ondblClick を設定しま? 062 * onMouseDown 【HTML】JavaScriptのイベン?onMouseDown を設定しま? 063 * onMouseUp 【HTML】JavaScriptのイベン?onMouseUp を設定しま? 064 * onMouseMove 【HTML】JavaScriptのイベン?onMouseMove を設定しま? 065 * onMouseOut 【HTML】JavaScriptのイベン?onMouseOut を設定しま? 066 * onMouseOver 【HTML】JavaScriptのイベン?onMouseOver を設定しま? 067 * onSelect 【HTML】JavaScriptのイベン?onSelect を設定しま? 068 * onKeydown 【HTML】JavaScriptのイベン?onKeydown を設定しま? 069 * onKeypress 【HTML】JavaScriptのイベン?onKeypress を設定しま? 070 * onKeyup 【HTML】JavaScriptのイベン?onKeyup を設定しま? 071 * autofocus 【HTML5】指定した?力?カーソルが当たって自動的にフォーカスされます? 072 * placeholder 【HTML5】?力?初期表示する?を指定します? 073 * required 【HTML5】?力??を指定しま? 074 * roles 【TAG】ロールをセ?しま? 075 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 076 * > ... Body ... 077 * </og:textarea> 078 * 079 * ●使用? 080 * <og:textarea name="BUN" /> 081 * 082 * <og:textarea name="BUN"> 初期値に値をセ?した?? 083 * test 084 * </og:textarea name="BUN"> 085 * 086 * @og.group 画面部? 087 * 088 * @version 4.0 089 * @author Kazuhiko Hasegawa 090 * @since JDK5.0, 091 */ 092 public class TextareaTag extends HTMLTagSupport { 093 //* こ?プログラ??VERSION??を設定します? {@value} */ 094 private static final String VERSION = "5.2.1.0 (2010/10/01)" ; 095 096 private static final long serialVersionUID = 521020101001L ; 097 098 /** 099 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 100 * 101 * @return 後続????( EVAL_BODY_BUFFERED ) 102 */ 103 @Override 104 public int doStartTag() { 105 return( EVAL_BODY_BUFFERED ); // Body を評価する? extends BodyTagSupport ? 106 } 107 108 /** 109 * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします? 110 * 111 * @og.rev 3.1.1.0 (2003/03/28) ボディの?を取得する??、CommonTagSupport で行う? 112 * @og.rev 3.1.1.0 (2003/03/28) body 属?に?{@XXXX} パ?ス機?を付加する? 113 * 114 * @return 後続????(SKIP_BODY) 115 */ 116 @Override 117 public int doAfterBody() { 118 String str = getBodyString(); 119 120 if( str != null && str.length() > 0 ) { 121 String label = StringUtil.htmlFilter( str ); 122 if( label != null && label.length() > 0 ) { 123 set( "body",label ); 124 } 125 } 126 127 return(SKIP_BODY); 128 } 129 130 /** 131 * 検索条件の入力用の?ストフィールドを作?します? 132 * 133 * ??ブルタグによりフィールド??されます? 134 * 使用時?、テーブルタグを前後に使用して下さ?? 135 * 136 * @og.rev 4.3.7.1 (2009/06/08) id=labelのclass? 137 * @og.rev 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します? 138 * 139 * @return 入力用の?ストフィールドタグ 140 */ 141 @Override 142 protected String makeTag() { 143 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 144 if( getMsglbl() == null ) { setLbl( get( "name" ) ); } 145 146 // 4.3.7.1 (2009/06/08) id=labelのclass? 147 // rtn.append( "<td id=\"label\">" ); 148 rtn.append( "<td class=\"label\">" ); 149 rtn.append( getLongLabel() ); // 4.0.0 (2005/01/31) 150 rtn.append( "</td>" ); 151 rtn.append( "<td>" ); 152 rtn.append( XHTMLTag.textarea( getAttributes() ) ); 153 rtn.append( "</td>" ); 154 155 // 5.2.1.0 (2010/10/01) must , mustAny 属?を?動化します? 156 if( getMustType() != null ) { rtn.append( makeMustHidden( get( "name" ) ) ); } 157 158 return rtn.toString() ; 159 } 160 161 /** 162 * 【HTML】名前を?します? 163 * 164 * @og.tag 名前を指定します? 165 * 166 * @param name 名前 167 */ 168 public void setName( final String name ) { 169 set( "name",getRequestParameter( name ) ); 170 } 171 172 /** 173 * 【HTML】高さ(行数)を指定します? 174 * 175 * @og.tag 高さ(行数)を指定します? 176 * 177 * @param rows 高さ(行数) 178 */ 179 public void setRows( final String rows ) { 180 set( "rows",getRequestParameter( rows ) ); 181 } 182 183 /** 184 * 【HTML】横?カラ?)を指定します? 185 * 186 * @og.tag 横??します? 187 * 188 * @param cols 横?カラ?) 189 */ 190 public void setCols( final String cols ) { 191 set( "cols",getRequestParameter( cols ) ); 192 } 193 }