• ベストアンサー

htmlエンコード

javaでwebサイトの開発をしています。javaでhtmlの画面部品(intputやtextarea)に値をセットすることができるフレームワークを使っています。 問題は、特殊文字を出力したいときに、javaで画面部品に「&」をセットするとhtmlソースにおいて「&」に変換されてしまうことです。(インターネットで調べたところ、これをhtmlエンコード処理というそうです。) 実体参照を文字としてではなく、実体参照のままhtmlに出力したいのです。 何か良い方法はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

そういうフレームワークを使ったことも作ったこともありますが、 フレームワークに変換の有無を指定する方法が用意されているはずです。 でないと使い物になりませんから。 フレームワークにのマニュアルをよく読んでみてください。

koun
質問者

補足

回答ありがとうございます。xsltのdisable-output-escaping という属性を"yes"としたらできました。ただこの場合、クロスサイトスクリプティングの対策が必要になりました。

その他の回答 (4)

  • world99
  • ベストアンサー率64% (20/31)
回答No.5

こんにちは。 formタグのmethod属性がGETもしくは未設定になっているのではないでしょうか? GETだと入力データがURLの後ろに付加して渡されるためにHTMLエンコードされます。 POSTだとHTMLエンコードされずに渡されるはずです。 試してみて下さい。

参考URL:
http://archi.iza.ne.jp/blog/entry/357722/
回答No.3

&はGETにしてもPOSTにしても接続詞として使われているのを理解できている?

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>問題は、特殊文字を出力したいときに、javaで画面部品に「&」をセットするとhtmlソースにおいて「&amp;」に変換されてしまうことです。 それで正しいです。 inputのvalueやtextareaに、& や < のまま出力してはいけません。 そうしたいと思ったのなら、その思ったこと自体が間違っています。HTMLについて勉強してください。 あるいは、inputのvalueやtextareaに出力するのではなくて、自分でHTMLタグを生成したいというのがニーズなら、その部品を使うのが間違っています。タグ作成用の適切な部品を使ってください。

  • kei5989
  • ベストアンサー率40% (11/27)
回答No.1

こんにちは。 ご質問の件は、フレームワークが勝手にエンコードしているので、 どのフレームワークを使用しているか記載しないと、具体的には回答できません。(^-^; この状態でアドバイスするとしたら、フレームワークの仕様を確認してくださいとしか。。 フレームワークで特殊文字をエスケープする方法があるハズですので、 「&」をエスケープして渡せればよいかと思います。

関連するQ&A