奇怪的ColdFusion行为 - 中止不尊重

时间:2011-08-04 21:08:20

标签: coldfusion

使用ColdFusion 9.01时,我们偶尔会发现一个问题,即在CFC函数中可能发生错误,以及当我们尝试添加writeDump(foo)时;并且中止;调用错误的调用ColdFusion不尊重这些调用。

示例:

private void function index(Event)
{
    var rc = Event.getCollection();
    var prc = Event.getCollection(private=true);

    /** NOT HONORED! **/
    writeDump(var=rc);
    abort;

    prc.JSON = {};
    prc.JSON.show = variables.APIProxy.call(
         handler = 'shows'
        ,action = 'read'
        ,event = arguments.Event
        /** THE ERROR IS OCCURING HERE **/
        ,params = { language=lcase(rc.language.getLanguage_Medium()), show=rc.show_name }
    );
    prc.JSON.showEpisodes = variables.APIProxy.call(
         handler = 'episodes'
        ,action = 'index'
        ,event = arguments.Event
        ,params = { language=lcase(rc.language.getLanguage_Medium()), show=rc.show_name, detail=true }
    );
    prc.JSON.products = variables.APIProxy.call(
         handler = 'products'
        ,action = 'index'
        ,event = arguments.Event
        ,params = { language=lcase(rc.language.getLanguage_Medium()), detail=true }
    );
    Event.addAssets(
        'model/product.js
        ,model/show.js
        ,collection/product_mobile.js
        ,collection/show_mobile.js
        ,view/product_mobile.js
        ,view/productList.js
        ,view/show_mobile.js
        ,view/showList.js
        ,model/episode.js
        ,view/episode_mobile.js
        ,view/episodeList.js
        ,collection/episode_mobile.js
        ,collection/product_mobile.js
        ,mobile/episodeObject.css
        ,mobile/show.js
        ,mobile/show.css
        ,mobile/category.css
    ');

    Event.setLayout('layout.mobile');
    Event.setView("show/index_mobile");

    return;
}

我相信我们已经成功地消除了缓存。我很好奇是否有其他人遇到过这个。

谢谢。

亚伦

3 个答案:

答案 0 :(得分:3)

我猜这个错误是一个 parse 错误,而不是一个真正的运行时错误,因此在函数实际执行之前它会被抛出。它实际上并没有跳过你的abort,它只是无法解析(或执行)整个事情。

我不确定你为什么会在那里得到一个解析错误,但我知道处理结构文字的CF代码有点不稳定。

答案 1 :(得分:2)

问题在于参数调用函数中声明的结构文字。

答案 2 :(得分:0)

我会在这里说出你的问题可能与这个错误有关:

http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=86960

您的应用中是否有任何内容在onRequestEnd()方法中执行?

告诉我们发生问题时究竟发生了什么和/或输出会有所帮助。