CF2023: CFGRIDのBINDパラメータの値が正しく渡されない

ColdFusion 2023のcfgridのHTMLグリッドを使用する際、bind処理(JavaScript)で、bindで参照する項目名の記述にフォーム名が定義されていない場合、そのまま文字列として渡すという動作に変更されています。

以前のバージョンでは項目名の記述だけで良かったため、以前のバージョンで項目名のみを指定している場合、ColdFusion 2023では渡される値が違い、処理に問題が発生します。

コーディング例

<cfform name="frmMntIpt">

<cfselect name="sltArtist" ..... />

<cfgrid format="html" name="grid_Art" pagesize="5" selectmode="row" bindOnLoad="false" autowidth="no" width="500"

   bind="cfc:art.getArt({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection},{sltArtist})">

      <cfgridcolumn name="ArtID" display="no" />

      <cfgridcolumn name="ArtName" header="作品名" autoExpand="no" width="150" />

      <cfgridcolumn name="Price" header="価格" autoExpand="no" width="100" />

      <cfgridcolumn name="Description" header="作品詳細" autoExpand="no"  width="250" />

</cfgrid>
</cfform>

実行時

上記のコード例(cfselectの詳細や呼び出し先のcfcメソッドは省略しています)では、実行時にcfselect(このセレクトリストにsltArtistという名前を指定しています)の選択を変更すると、cfgridのbind属性に指定されているバインドパラメーター{sltArtist}が変更を検知し、指定のCFC(cfc:art.getArt)をAjaxで呼び出します。

バインドパラメーター{sltArtist}は暗黙的に同じフォーム内(cfformで指定されているfrmMntIpt)のsltArtistのvalue値を監視しており、この値が変更される(ブラウザ上でユーザーが選択項目を変更すると)value値が変更されたことをJavaScriptで検知して、CFCやJavaScriptを内部呼び出しします。

問題となるのは、CFCのメソッドに渡されるパラメータの値です。

  • ColdFusion 2021まで… sltArtistのvalue値(セレクトリストで選択された項目の値)
  • ColdFusion 2023 ... sltArtist という文字列

となっています。実行されるJavaScriptを確認した限り、これまでは、バインドパラメーターとして指定されている項目がフォームに存在しなかった際にJavaScriptエラーとなって処理が中断していたのを回避するためのロジックが追加されたように思われます。

ColdFusion 2023では、以下のようにバインドパラメーターとして指定する項目に、フォーム名を付けることで、これまで通りsltArtistのvalue値を渡す動きになります。上記のコード例では以下のように修正します。

{sltArtist} ⇒ {frmMntIpt:sltArtist}

バインド式の詳細については、以下に解説があります
https://helpx.adobe.com/coldfusion/developing-applications/requesting-and-presenting-information/using-ajax-data-and-development-features/binding-data-to-form-fields.html
※ブラウザの翻訳機能をご利用ください

 

尚、以前のバージョンと動作が違う(暗黙に同じフォーム内の項目を参照しなくなった)ことについては、以下で不具合登録されています。2024年3月の登録のため現時点では修正は行わわれていませんが、今後のUpdateリリース時にこの問題が修正されて以前のバージョンと同じ動きに戻る場合もあります。それまでの間は、上記の回避にて対応してください(もし修正されても、フォーム名を付けたままでも動作します)。
https://tracker.adobe.com/#/view/CF-4221164

 


記事公開日:2024年06月05日
最終更新日:2024年06月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.