ColdFusionで変数を表示する際にシャープ文字を使用するので、それが影響してエラーになっているようですね。エラーメッセージを確認してみましょう。
<cfset MyCode="12345#67890"> <cfoutput>#MyCode#</cfoutput>
次の情報は、Web サイト開発者のデバッグに役立ちます。 | |||||||||
リクエストを処理する際に、エラーが発生しました。 | |||||||||
|
エラーメッセージは以前も登場した、無効なCFML construct(構文)エラー。そして、メッセージに「終了の # が式にないようです。たとえば、#expr# ではなく #expr になっているようです。」のメッセージからも、シャープ記号が問題を発生する原因ですね。
今回の文字以外にも、二重引用符(")と一重引用符(')で同じような状況に遭遇する事があります。これら文字を利用する時は、エスケープ処理を行います。
ColdFusionで #や"、' をエスケープするには同じ文字を2個入力します。エラーが発生している1行目のシャープ記号を使用している箇所で行って下さい
エラー回避方法
<cfset MyCode="12345##67890">
二重引用符や一重引用符は、エスケープしなくても済むように上手く組み合わせる(二重引用符の区切り内で一重引用符を使用する、あるいはその逆、など)事を検討しましょう。
特殊文字
ColdFusionで、変数の値に #, ", ' を使う時には適切にエスケープすること(あるいはエスケープする必要があるかどうかの判断)を心がけて下さい。
また、文字列だけでなく、タグの属性に値をセットする場合にも同様にエスケープが必要な場合は検討して下さい。下記の<cfcookie>タグの例では、クッキーの有効期限を翌年1月1日にセットするため、DatePart関数を使用しています。タグの属性で二重引用符(")を使用し、DatePart関数で年を抜き出す箇所で一重引用符(')を使用しています。
<cfcookie name="cookie1" value="test" expires="1/1/#DatePart('yyyy',Now())+1#">
タグや関数以外でも、エスケープ処理が必要となる箇所が出てきます。それは<cfoutput>〜</cfoutput>で囲む範囲です。<cfoutput>で囲む範囲の中でシャープ記号が使われるものとして、例えば、下記のようなHTMLを含む箇所を<cfoutput>〜</cfoutput>で囲んでいると、エラーが発生するのに気付きますでしょうか?
<cfoutput> <h3>マーケティング部</h3> <font color="#FF0000">企画課</font> #Varibles.LastName#さん </cfoutput>この場合の検討点は@かAのどちらかとなります。エスケープ処理を避ける事を優先するか、それともエスケープを行うか、、、みなさん次第です。