【问题标题】:railo application.cfc this.mappings not workingrailo application.cfc this.mappings 不工作
【发布时间】:2011-10-16 01:54:35
【问题描述】:

我正在使用最新版本的 railo,并试图让每个应用程序的映射工作。这就是我正在做的:

<cfcomponent name="MyApp">
    <cfset THIS.Name = "MyApp">
    <cfset THIS.Mappings["/myapp"] = ExpandPath(".")>
</cfcomponent>

所以,我试图能够通过 myapp.* 映射访问此应用程序文件夹中的组件,而不必访问 rootapp.myapp.*(据我了解,此组件设置应该可以工作。

但是,此映射无法访问我的组件,并且当我对代码中的应用程序变量执行 cfdump 时,它会显示“应用程序名称”设置为“MyApp”,但映射没有显示任何内容。

railo 不支持这些映射,还是我做错了什么?

编辑:

这是我得到的确切错误:

invalid component definition, can't find myapp.data.MyObject

应该已经建立了myapp 映射,并且MyObject 确实存在。这是我的结构:

/rootfolder/myapp/Application.cfc
/rootfolder/myapp/data/MyObject.cfc
/rootfolder/myapp/pages/MyPage.cfm

简而言之,“MyPage.cfm”依赖于映射来轻松访问“MyObject”组件。 Application.cfc 应该被加载,因为 cfml 处理器应该开始向上移动目录,直到找到一个。

【问题讨论】:

    标签: coldfusion components railo mappings application.cfc


    【解决方案1】:

    你的语法没问题,我刚刚对目录树深处的应用程序做了同样的事情,它工作正常。

    但是,此映射无法访问我的组件,

    什么是精确错误? “无效的组件定义,找不到 myapp.xyz”?

    你的cfm和cfc在同一个目录吗? (这基本上就是你想要做的)

    当我在代码中对应用程序变量执行 cfdump 时,它会显示“应用程序名称”设置为“MyApp”,但映射没有显示。

    通过转储应用程序范围,您不会看到此信息。唯一的选择是像往常一样使用 Application.cfc。

    <cfset app = CreateObject("component",  "application") />
    <cfdump var="#app#">
    

    编辑。这里有两种解决方案。

    像这样定义映射,因此将为 Application.cfc 计算路径:

    <cfset this.mappings["/myapp2"] = getDirectoryFromPath(getCurrentTemplatePath())>
    

    或者像这样改变组件路径:

    <cfset MyObject = CreateObject("component",  "myapp.data.MyObject") />
    

    问题在于ExpandPathgetCurrentTemplatePath() 返回的路径之间存在差异。

    【讨论】:

    • 就像一个魅力,最重要的是,它是有道理的。谢谢!
    • 哦,顺便说一句,我使用了 getDirectoryFromPath(...) 解决方案;我正在尝试使此应用程序流畅且不绑定到任何硬编码路径,因此其他解决方案并不理想。
    • 简单地转储 this.mappings 然后在 Application.cfc 中中止始终是对计算的映射路径进行故障排除以确保它指向您认为的位置的最佳方法。 writeDump(this.mappings); abort;
    【解决方案2】:

    更新: 正如 Sergii 指出的那样,语法是有效的,但最终效果是一样的。

    试试这个语法

    <cfcomponent>
        <cfset THIS.Name = "MyApp">
        <cfset THIS.mappings = { "/myapp" = ExpandPath(".") } >
    </cfcomponent>
    

    【讨论】:

    • 这个语法完全一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2014-11-13
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多