【问题标题】:Coldfusion extended component missing parametersColdfusion扩展组件缺少参数
【发布时间】:2012-09-06 02:01:22
【问题描述】:

我正在尝试使用远程函数获取 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";
}

如果我调用这个 URL:/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,扩展属性不会显示。

是否有可能让它工作?

【问题讨论】:

    标签: web-services coldfusion components cfc


    【解决方案1】:

    这可能与 seralizejson 错误有关(不确定何时会没有错误)。

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

    【讨论】:

    • 我确实想知道这是否与 JSON 有关,但如果我只是在页面中执行 writeDump,它也不会显示那里的属性。但你是对的,如果这是一个错误,那么我将不得不遍历属性并手动输出它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多