ドットで終わる数値を演算子で比較した場合の結果が変わりました

ColdFusionで、<cfif>と演算子(is,eq等)を使用して条件比較を行うと、条件に指定した値を数値、または日付時刻オブジェクトへの変換を試みます。

※この動作については、下記のFAQで紹介しています
cfif で文字列を比較する際の注意事項

この動き自体はColdFusion 2021でも変更はありませんが、ColdFusion 2021で、「1.」や「2.」のようにピリオドで終わる値を条件式に指定した場合、ColdFusion 2018はまでは「1.と1」や「2.と2.0」は同じ値として判定されていましたが、ColdFusion 2023や2021では違う値と判定されます。

ColdFusion Fiddleで確認する

これは、以前のColdFusionバージョンで不具合としてユーザーから申告されたり(CF-4139644)、ColdFusion 2021から厳密等価演算子 ( === ) の対応を行ったためです。この動作の違いが運用中のアプリケーションに影響を与える場合は、以前のバージョンに戻すJVM引数が用意されています。

-Dcoldfusion.number.allowdotsuffix=true


上記のJVM引数を ColdFusion Administrator の「サーバーの設定 > JavaとJVM」の「JVM引数」に追加(スペース区切りで既存の設定に追加してください。その際に、改行は絶対に入れないでください)してください。その後、ColdFusion を再起動することで、従来の動作に戻すことができます。

(参考)
CF-4214261 | Tracker (adobe.com)

※記事のカテゴリを「ColdFusion2021情報」から「技術情報」に変更しました。


記事公開日:2023年02月16日
最終更新日:2023年09月05日

 


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.