Next Page

1

Previous Page

スレッド: CF9の互換性

作成日: 12/04/09 09:32 AM

返信: 4

tomo


新米


入会日: 11/19/09

投稿数: 8

CF9の互換性
11/19/09 11:39 AM

初めて投稿させていただきます。
CF8で正常に動作していたグリッドが、CF9で表示できなくなりました。
もともと、access="remote"のメソッドは、下位コンポーネントから明示的に呼び出す必要があった?のですが、CF9では全く動作しなくなってしまいました。
コンポーネント仕様の変更か、はたまた単なるバグか、困ってます。 :::-(::
CF9の新機能には大いに期待しているので、CF8との互換性が懸念されるのは残念です。

<cfform>
<cfgrid autowidth="true" name="testgrid" format="html"
bind="cfc:sample.cfc.getData({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection})" width="300" pagesize="10">
<cfgridcolumn name="ID" header="ID">
<cfgridcolumn name="NAME" header="NAME">
</cfgrid>
</cfform>

------------------- gridRetriever.cfc --------------
<cfcomponent>
<cfset datasource="">

<cffunction name="makeQueryString">
<cfreturn "">
</cffunction>

<cffunction name="executeQuery" access="private">
<cfargument name="gridsortcolumn">
<cfargument name="gridsortdirection">
<cfset var sql=makeQueryString()>
<cfif gridsortcolumn neq "" or gridsortdirection neq "">
<cfset sql=sql&" ORDER BY #gridsortcolumn# #gridsortdirection#">
</cfif>
<cfquery name="dd" datasource="#dataSource#" cachedwithin="#CreateTimeSpan(0, 0, 0, 1)#">
#preserveSingleQuotes(sql)#
</cfquery>
<cfreturn dd>
</cffunction>

<cffunction name="getData" access="remote">
<cfargument name="page">
<cfargument name="pageSize">
<cfargument name="gridsortcolumn">
<cfargument name="gridsortdirection">
<cfset var qq=executeQuery(gridsortcolumn,gridsortdirection)>
<cfreturn QueryConvertForGrid(qq,page,pageSize)>
</cffunction>
</cfcomponent>

------------------- sample.cfc --------------
<cfcomponent extends="gridRetriever">
<cfset datasource="ds">

<cffunction name="makeQueryString">
<cfreturn "SELECT ID,NAME FROM USER">
</cffunction>

<!--- Have to redefine method! --->
<cffunction name="getData" access="remote" output="false">
<cfargument name="page">
<cfargument name="pageSize">
<cfargument name="gridsortcolumn">
<cfargument name="gridsortdirection">
<cfreturn super.getData(page,pageSize,gridsortcolumn,gridsortdirection)>
</cffunction>
</cfcomponent>

Link | Top | Bottom

sussussu


長老


入会日: 05/31/07

投稿数: 153

Re: CF9の互換性
11/25/09 11:28 AM

発生しているエラーは確認されましたか?

私もちゃんと調べてはいないのですが、私の周囲でも同様にcfgridが表示されなくなる現象は発生しております。

で、ちょっと動かしてみましたところ、

バインド式の部分
(本題では無さそうですがsample.cfc.getData()ではなくsample.getData()では?)

cfc:sample.getData({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection})

で、{cfgridsortcolumn}の値が取れていないように見えます。

cfqueryの直前でcflogやcftraceしてSQLの内容を確認してみてください。

#Ajaxロガーは文字化けすることが多いですがコンソールで確認すると化けてなかったりすることがあります。

コードのバグなのかCFのバグなのかはまだ判りませんが、パッと見ではコードが間違っているようには見えませんでした(^^;

----------------
suss:::-D::ussu
----------------

Link | Top | Bottom

tomo


新米


入会日: 11/19/09

投稿数: 8

Re: CF9の互換性
11/30/09 7:01 PM

アドバイス、ありがとうございます。
メソッドを以下のように修正したところ、正常に表示されました。

<cffunction name="executeQuery" access="private">
<cfargument name="gridsortcolumn">
<cfargument name="gridsortdirection">
<cfset var sql=makeQueryString()>
<cfif gridsortcolumn neq "" and gridsortdirection neq "">
<cfset sql=sql&" ORDER BY #gridsortcolumn# #gridsortdirection#">
</cfif>
<cfquery name="dd" datasource="#dataSource#" cachedwithin="#CreateTimeSpan(0, 0, 0, 1)#">
#preserveSingleQuotes(sql)#
</cfquery>
<cfreturn dd>
</cffunction>

CF8では、'たまたま'動いていたということですね...(汗)
お騒がせしました。

Link | Top | Bottom

sussussu


長老


入会日: 05/31/07

投稿数: 153

Re: CF9の互換性
12/04/09 5:51 PM

>gridsortcolumn neq "" or gridsortdirection neq ""

>gridsortcolumn neq "" and gridsortdirection neq ""

の違いってことでしたか。

gridsortdirectionは渡されたのに、gridsortcolumnは渡されていない状態ということですよね。両方そろってるというのが思い込みだといわれたらそれまでですが、揃ってるものだと思っちゃいますよね。しかも8ではその通りだったんですし。

ドキュメントにない部分(たぶん)の動作の変更というヤツはやっかいですね。細かいことなので仕方ない事だとは思いますが、互換性を謳ってるわりに実際に動いていたコードが動かなくなるというのは、とても印象を悪くすることだと思います(^^;

----------------
suss:::-D::ussu
----------------

Link | Top | Bottom

tomo


新米


入会日: 11/19/09

投稿数: 8

Re: CF9の互換性
12/04/09 6:32 PM

実はもっとクリティカルな問題があって、やはりCF9のcfgridを利用したコードをIE7で動かすと、下記のエラーダイアログが表示され、ログすら出力されない状態となっています。

「ランタイムエラーが発生しました。
 デバッグしますか?
 行:7
 エラー:'g.cache'はNullまたはオブジェクトではありません。」

ちなみに、FireFox3.5では、全く同じコードが正常に動作しています。
Ext JS(3.0)のスクリプトエラーっぽいですが、CF9への移行は、
安定するのを待とうかなという気になっています。

Link | Top | Bottom

Next Page

1

Previous Page

新規投稿

ログイン して返信して下さい。