首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >railo application.cfc this.mappings不工作

railo application.cfc this.mappings不工作
EN

Stack Overflow用户
提问于 2011-07-29 15:42:59
回答 2查看 3K关注 0票数 3

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

代码语言:javascript
复制
<cfcomponent name="MyApp">
    <cfset THIS.Name = "MyApp">
    <cfset THIS.Mappings["/myapp"] = ExpandPath(".")>
</cfcomponent>

因此,我试图通过myapp.*映射来访问这个应用程序文件夹中的组件,而不是必须使用rootapp.myapp。*(据我所知,这个组件设置应该可以工作。

但是,这个映射无法访问我的组件,而且当我在代码中对应用程序变量执行cfdump时,它将显示"applicationname“设置为"MyApp",但是没有显示映射。

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

编辑:

这正是我所得到的错误:

代码语言:javascript
复制
invalid component definition, can't find myapp.data.MyObject

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

代码语言:javascript
复制
/rootfolder/myapp/Application.cfc
/rootfolder/myapp/data/MyObject.cfc
/rootfolder/myapp/pages/MyPage.cfm

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-29 17:29:01

您的语法是好的,我刚刚对目录树中的应用程序做了同样的操作,它工作得很好。

但是,这个映射不能访问我的组件,

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

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

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

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

代码语言:javascript
复制
<cfset app = CreateObject("component",  "application") />
<cfdump var="#app#">

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

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

代码语言:javascript
复制
<cfset this.mappings["/myapp2"] = getDirectoryFromPath(getCurrentTemplatePath())>

或更改组件路径,如下所示:

代码语言:javascript
复制
<cfset MyObject = CreateObject("component",  "myapp.data.MyObject") />

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

票数 2
EN

Stack Overflow用户

发布于 2011-07-29 16:20:36

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

尝试使用以下语法

代码语言:javascript
复制
<cfcomponent>
    <cfset THIS.Name = "MyApp">
    <cfset THIS.mappings = { "/myapp" = ExpandPath(".") } >
</cfcomponent>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6875621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档