Coldfusion扩展了组件缺失的参数

时间:2012-09-05 16:03:32

标签: web-services coldfusion components cfc

我正在尝试使用远程函数获取CFC(webCFC)以返回不同CFC(objCFC)的实例。

以下是CFC:

#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"
}

哪个好。如果我调用此URL: /webCFC.cfc?method=displayCFC&returnFormat=json&version=2 ,则响应将缺少 baseCFC

中的属性
{
"age" : 30
}

我希望回复看起来像这样:

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

我知道我可以在objCFC上使用setName()和getName()函数,它最终扩展 baseCFC 但是如果我通过浏览器访问CFC则不会显示扩展属性。

是否有可能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

这可能与seralizejson错误有关(不确定它什么时候会没有bug)。

解决方法是实现您自己的getMemento()toJSON()方法,该方法返回结构中的所有所需属性。然后serializeJSON改为结构。