- PR -

エンコードするかどうかを個別に指定したい

1
投稿者投稿内容
田中
ベテラン
会議室デビュー日: 2002/05/08
投稿数: 54
投稿日時: 2005-12-05 22:12
strutsで質問があります。

フォームに複数の項目があるときに、特定の項目だけHTMLタグを変換しないようにするにはどうしたら良いのでしょうか?
具体的には
<html:textarea property="mailText" rows="10" value="<%= pMailText %>" />
で、pMailText の中に「From: <xxx@yyy.zzz> 」というメールアドレスがあると
その部分が「From: &lt;xxx@yyy.zzz&gt; 」に変換されてしまうので困っています。
同じ画面の他の項目は逆にエンコードして欲しいのですが、そんな都合のいい方法はありますか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-12-05 23:54
bean:writeタグなどはescape属性で指定可能ですが、
textareaタグは対応していないみたいですね。

1.textareaタグのクラスを継承して、独自のタグを作成する
2.非表示のdiv/span等のタグを作成して、bean:writeで書き出し、
   Javascriptでtextareaに格納する

って感じでいかがでしょうか。
ちなみにタグライブラリを自作するなら、

1.org.apache.struts.taglib.html.TextareaTagクラスを継承する
2.renderDataメソッドをオーバーライド
3.struts-html.tldのテキストエリアタグの設定部分を
  コピーしてmyTag.tldを作成する
4.web.xmlにタグライブラリの定義を追加
5.JSPで使用の宣言を追加

って感じでOKです。
田中
ベテラン
会議室デビュー日: 2002/05/08
投稿数: 54
投稿日時: 2005-12-06 13:38
ご回答ありがとうございます。
かつのりさまの回答からふとtextareaだけstrutsを使わないというのも
ありかなと考え試してみました。

<textarea name="mailText" rows=10><%= pMailText %>" /></textarea>

としたら期待通りの結果になりました。
タグ関係はstrutsを使うように統一していたのですが拘らないほうがいい
場合もあるのですね。
1

スキルアップ/キャリアアップ(JOB@IT)