【ColdFusion】encodeForHTML使用時の注意点

encodeForHTML関数を利用していたらエラーと戦うことになったので…

CF11からHTMLEditFormat関数が非推奨となり、
encodeForHTML関数が推奨されるようになったようです。

しかしIIf関数を利用し、
かつ日本語を出力しようとすると下記のエラーメッセージが出力されてしまいます。

終了の # が式にないようです。たとえば、#expr# ではなく #expr になっているようです。

その対策方法についてですが、2点あります。

  1. 三項演算子を利用する
  2. HTMLEditFormatを使い続ける

1.三項演算子を利用する

IIf関数も非推奨になってきているらしく、三項演算子の利用を推奨しているようです。
DE関数と組み合わせて利用しなければいけませんでしたが、
どうやら三項演算子の場合はDE関数は不要で動的に式を評価してくれるようです。

2.HTMLEditFormatを使い続ける

何だかんだでCF2016でもHTMLEditFormat関数は残っているので、
利用し続けるのも一つの手です。
ですが、最初に言った通りでCF11からセキリュティの問題で
encodeForHTML関数の利用を推奨しています。

結局のところ…

HTMLEditFormat関数が更新されるのを信じるか、
HTMLEditFormat関数が廃止されるかもしれないことを考えて先に対応しとくかは
色々と考えておかないといけませんね(:3_ヽ)_

ですが、encodeFor*関連の関数は複数存在しています。
※詳しい使い分けの方法についてはまだ知らないので、気が向いたら検証してみます…

関数名 説明
encodeForHTMLAttribute inputタグ内で利用する?
encodeForCSS CSS用
encodeForJavaScript JavaScript用
encodeForURL URLパラメータ用
encodeForXML XML用

来年はCFとJavaの連携についての記事を充実にしていきたいです(:3_ヽ)_

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください