2012-09-05 43 views
0

我試圖讓一個具有遠程函數的CFC(webCFC)返回一個不同CFC(objCFC)的實例。Coldfusion擴展組件缺失參數

這裏是氯氟烴:

#webCFC 
component { 
    remote function displayCFC(version=1) { 
     if(version==1) { 
      return new baseCFC(); 
     } else { 
      return new objCFC(); 
     } 
    } 
} 

#baseCFC 
component 
    accessors="true" 
    persistent="true" 
{ 
    property name="name" default="pete";  
} 

#objCFC 
component 
    extends="baseCFC" 
    persistent="true" 
    accessors="true" 
{ 
    property name="age" default="30"; 
} 

如果我把這個網址:/webCFC.cfc?method=displayCFC & returnFormat = JSON,我得到這樣的迴應:

{ 
"name" : "pete" 
} 

這很好。如果我把這個網址:/webCFC.cfc?method=displayCFC & returnFormat = JSON &版本= 2,則響應從缺少財產baseCFC

{ 
"age" : 30 
} 

我期待的迴應看是這樣的:在objCFC

{ 
"name" : "pete", 
"age" : 30 
} 

我知道,我可以使用的setName()輸出,getName()函數,它definatly延長baseCFC但擴展屬性不顯示,如果我通過瀏覽器訪問CFC。

是否有可能使此工作?

回答

0

這可能與seralizejson錯誤有關(不確定它何時無錯誤)。

解決方法是實現您自己的getMemento()toJSON()方法,該方法返回結構中的所有所需屬性。然後用serializeJSON來代替。

+0

我確實想知道是否使用JSON,但是如果我只是在頁面中執行writeDump,它不會顯示那裏的屬性。但是你是對的,如果這是一個bug,那麼我將不得不遍歷這些屬性並手動輸出它們 –