FLEX on ColdFusion , CF 接收 ArrayCollection
驚 !! 難道 CF 不可以接收從 FLEX 丟過來的 ArrayCollection 嗎 !!??
錯誤資訊 : Unable to invoke CFC - The MYAC argument passed to the putArrayCollection function is not of type query.
話說今天看到一本國外原文新書 FLEX on Rails 那這樣子怎麼可以少個 FLEX on ColdFusion 呢 !
上次我在進行 FLEX AS3與ColdFusion進行Remoting = 資料庫篇 有提到 FLEX 與 ColdFusion 的資料型態轉換,我們在幫各位勾起回憶一下。
| ColdFusion 資料型態 | ActionScript 資料型態 |
| String | String |
| Array | Array |
| Query | ArrayCollection |
| Struct | Object |
| CFC instance | Strongly typed VO |
| Date | Date |
| Numeric | Number |
| XML Object | XML Object |
以上就是我們上次提到的 CF 與 AS 的資料型態的轉換,上面很明顯的提到 Query 與 ArrayCollection 是對等的資料型態,而我們在資料庫實作上也證明了 CFC 回傳一個 Query 而 FLEX 可以正確的使用一個 ArrayCollection 來做接收並且處理。
但是當我利用 FLEX 傳一個 ArrayCollection 錯發生了不可預期的錯誤。
錯誤碼 : Unable to invoke CFC - The MYAC argument passed to the putArrayCollection function is not of type query.
詳細錯誤資料 : If the component name is specified as a type of this argument, its possible that a definition file for the component cannot be found or is not accessible.
說的真是讓我一頭霧水阿,簡單的說就是收到的物件並不可以被轉型為 query ,這下子還真是頭大阿,寫個簡單的範例測試一下。
remotingArrayCollectionTest.mxml
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private function init():void{
this.roArrayCollection.putArrayCollection(new ArrayCollection());
}
]]>
</mx:Script>
<mx:RemoteObject id="roArrayCollection" destination="ColdFusion" source="comp.arrayCollectionTest"/>
</mx:Application> |
arrayCollectionTest.cfc
1 2 3 4 5 6 7 8 | <cfcomponent> <cffunction name="putArrayCollection" access="public" returntype="string"> <cfargument name="myAC" type="query" required="yes"> <cfset myResult="ok"> <cfreturn myResult> </cffunction> </cfcomponent> |
這樣接受的話你也會出現跟我一樣的錯誤碼了,既然 query 不能收,那該怎甚麼來收呢 ? 答案是 Array 我們將 CFC 程式碼修改如下 :
arrayCollectionTest.cfc
1 2 3 4 5 6 7 8 | <cfcomponent> <cffunction name="putArrayCollection" access="public" returntype="string"> <cfargument name="myAC" type="array" required="yes"> <cfset myResult="ok"> <cfreturn myResult> </cffunction> </cfcomponent> |
這段程式碼就可以被正常運行了,雖然我不瞭解為什麼無法用 Query 來接收 ArrayCollection 但是至少眼前的危機暫時解除了,希望如果有看到這篇的先知們可以幫忙解答一下,謝謝。
另外,當你很認真的看完這篇文章,我想代表你也對 ColdFusion 也頗有興趣或是正在用 ColdFusion 開發系統,雖然我用 CF 很少,也不太會用,但是我希望你可以留下你的資訊,大家做個交流,因為說實在的,雖然 CF 蠻好用的,但是有時候真是孤掌難鳴,想要找些資料都要在速度比較慢的國外網站搜尋,國內的 ColdFusion BLOG 似乎也都陣亡的差不多了,不知道我還能在吐幾篇跟 CF 有關的資料,也是蠻想轉戰 C# 了,看來勢在必行,畢竟我並不在 104 人力銀行上班,沒有那麼多倒入 ColdFusion 的前輩可以提點,謝謝。
Random Posts
Loading…
相關文章 :











你在我網誌上留過言 http://www.wretch.cc/blog/fongyoung/
我的msn WLM是 — 已加密 –
ArrayCollection我沒試過從Flex搬去CF 可是你如果轉成array的話,就很容易了.
基本上不用轉 ARRAY 也可啦 ^^ 反正 ArrayCollection 硬丟過去接收的時候就要用 Array 來讀資料了。
很高興可以認識你 ^^
喔我寫錯了
是jonathan.fong@missoni.com.tw
難怪我想說都加不到人 XD
我也很高興認識你 真的 孤掌難鳴 這四個字說的太好了
我上班不能用msn 下班才會用 有什麼事情問題等等都可以mail到我的信箱 jonathan@cfsoho.com
我已經暫時投靠 PHP 陣營了 , 不過 CF 仍然會在我心中長存的~ , 君不見三國鼎立時代早已過去 。
M~ ^_^ 有機會交流交流~ 沒事可以複習一下 CF
php都要在裡寫 不過癮
在裡寫? 不太懂~ 呵呵
如果不嫌棄我以後可以在你的部落格轉載我的文章 最近也想開部落格 可是部落格都不可以寫< >
PHP都要在<% >裡面寫 我的大於小於符號被蓋住了
可以阿 沒有問題~
反正我快變出不出新把戲了 XD
你是說 PHP 要寫
? 的標籤嗎
這種標籤嗎? 是有點麻煩
但是習慣寫 CLASS 到是無所謂
你是怎麼接觸到cf 幾年了? 當初是為什麼接觸cf?
第一次接觸到 CF 是 2003 還 2004 的事情了,當初看到一個網站 溫哥華華人網 但是這個網站現在好像已經死掉了 , 在當初接觸到他副檔名寫 .cfm 才了解到 coldfusion ,不過真的接觸到是用 CF8 ,因為寫 ASP 與 JSP 對於那種用引號包來包去的寫法混雜在 HTML 標籤內實在很感冒,所以轉向用 CF TAG ,某部分來說速度蠻快的,不過另一方面也是少了點彈性,當然最大的問題還是支援找不到,以軍隊來說的話沒有支援後勤,根本沒辦法打仗阿 !
我是大約六七年前開始寫的 是我哥介紹我cf 因為他在美國的ups上班 ups的內勤都是用cf寫的。
然後我就一路寫cf4.5寫到8
據消息得知,台灣的 104 人力銀行 CFM 也是招募新血也是頭痛,不知道幾時候會轉向 PHP 陣營,所以您是老前輩啦,可以提供不少知識,你現在也是在 CF 相關的公司上班嗎?
是ㄚ 104之前也找過我 其實一般新手要學cf上手只需要兩個禮拜就好了 他門可以招募一些asp的人 asp的人如果看到cf是這麼寫一定很恨微軟
你知道微軟當初開發asp的人都是挖allaire的人ㄋㄟ
雖然兩個禮拜可以學會標準且基礎的 CF ,但是一些特殊用法,或是一些好用的 TAG 在台灣根本連一本書沒寫呢 , 所以我也不知道該怎麼用下去 哈哈,不過還是要看開發來決定啦,不過語言就是這樣,除非真的老手,不然用 CF 我覺得真的沒比較快 XD
ㄝ 我找個文章給你讀一讀
這是二月十一號的文章: 一個小試驗 老師叫幾組學生用不同的程式語言寫一套程式,結果cf的學生第一個寫完 還多加了flex頁面
http://co.ldfusion.com/index.cfm/2009/2/11/ColdFusion-Is-Dead
不過撰寫速度這種東西,還是跟經驗累積有差異的,假如是簡單的東西,大家都可以寫出來的,那可能以簡化 TAG 方式來寫最快,但是如果是需要蒐尋資料的,尤其是在學習階段或是資源分享階段,CF 完全輸了。