范围在会话范围的CFC文件夹之外无法工作

时间:2019-05-07 14:06:10

标签: coldfusion cfc application.cfc coldfusion-2018

我最近在工作中安装了ColdFusion 2018,但由于无法使示波器正常工作而感到沮丧。像往常一样,我将所有.cfcs都放在/ CFC文件夹中,并且在该文件夹中没有空白application.cfm文件的情况下,它们都不会执行。我尝试扩展应用程序,包括应用程序,代理扩展应用程序,将CFC移至根文件夹,这只会使我在JSON上出现语法错误。我已经阅读了过去两周内可以找到的每篇文章,但我仍然无法理解为什么范围不起作用。看来我可以在/ CFC文件夹中设置会话变量,但是在文件夹外部不可用?几年来我没有和CF一起工作过,但是我认为自己很精通,因为我的一生无法工作。我很可能因为树木而错过了森林,但如果有人愿意提供帮助,我将不胜感激。

实例化对象;

application.SessionMgr = CreateObject(this.obj,'CFC.SessionMgr').init('session');

代理呼叫;

cfajaxproxy cfc="CFC/SessionMgr"       jsclassname="SessionMgr";

返回正确;

var s = new SessionMgr();
       var setReport = s.setValue('ReportID', document.getElementById('cboReportKey').value);
       alert(setReport);

但是,即使手动设置session.ReportID = 7也不会保留在文件夹之外。

这是SessionMgr.init

这是init;

<cffunction name="init" access="public" returntype="SessionMgr" output="no" hint="I instantiate and return this object.">
        <cfargument name="scope" type="string" required="yes">
        <cfargument name="requestvar" type="string" default="SessionInfo">
            <cfset var scopes = "application,Client,Session">
            <cfif Not ListFindNoCase(scopes, arguments.scope)>
                <cfthrow message="The scope argument for SessionMgr must be a valid scope (#scopes#)." type="MethodErr">
            </cfif>
            <cfset variables.scope = arguments.scope>
            <cfset variables.requestvar = arguments.requestvar>
            <cfset updateRequestVar()>
        <cfreturn this>
    </cffunction>

setValue fn

<cffunction name="setValue" access="remote"  hint="I set the value of the given user-specific variable." returntype="string">
        <cfargument name="variablename" type="string" required="yes">
        <cfargument name="value" type="any" required="yes">
            <cfset var val = arguments.value />
            <cfset SetVariable("#arguments.variablename#", val) />
            <cfset r =  Evaluate(arguments.variablename) />
        <cfreturn r />
    </cffunction>

1 个答案:

答案 0 :(得分:0)

好吧,尝试了一切之后,请找到解决方案。通过代理扩展在这种情况下不起作用,尝试了一下。最终可行的方法是在/ CFC文件夹中创建application.cfc并从/ root application.cfc中剥离所有功能组件,并仅确保应用程序名称在/ CFC文件夹中的简化版本中与/ root cfc相同名称。显然,此psuedo扩展了/ root application.cfc的所有功能,并使所有内容可用于/ CFC文件夹中的框架。感谢这里的每个人帮助我在操舵室之外思考并解决了这个问题。