自定义标记是否适用于映射?我尽量不将CustomTags文件夹作为相对地址。
我试过了:
<cfset this.mappings["/CT"] = Expandpath("/myProjects/Project1/CustomTags")>在Application.cfc内部,然后
<cfimport prefix="tag" taglib="/CT">在我的页面里面,但它不是。
上面写着:
无法导入/CT指定的标记库。遇到以下错误: C:\Inetpub\wwwroot\CT。确保您指定了有效的标记库。
发布于 2009-06-24 16:23:30
文档说明它与管理员ColdFusion映射页面中指定的目录一起工作。您是否尝试过在ColdFusion管理器中设置映射,以查看是否可以先进行设置?如果这样可以工作,但是application.cfc中每个应用程序设置的this.mappings都不能工作,那么这可能是一个错误?!?
taglib EDIT:我测试了Adam关于使用expandPath()函数的建议,但这也不起作用,因为标记库属性必须包含常量值。它不能包含变量或函数。除非您在ColdFusion管理器中使用映射集,否则它根本不起作用。我使用此application.cfc尝试了以下测试。
<cfcomponent>
<cfset this.name = "TestApp" />
<cfset this.loginStorage = "session" />
<cfset this.sessionManagement = true />
<cfset this.setClientCookies = true />
<cfset this.setDomainCookies = false />
<cfset this.sessionTimeOut = CreateTimeSpan(0,12,0,0) />
<cfset this.applicationTimeOut = CreateTimeSpan(1,0,0,0) />
<cfset this.mappings['/CT'] = "C:\apache\htdocs\myProjects\Project1\CustomTags"/>
</cfcomponent>这是在一个ColdFusion模板中:
<cfimport prefix="tag" taglib="#expandpath('/CT')#">抛出错误:
此表达式必须具有常量值。
<cfset CT = expandpath('/CT')/>
<cfimport prefix="tag" taglib="#CT#">抛出错误:
此表达式必须具有常量值。
发布于 2009-07-30 18:24:01
与Jayson报告的相反-我让CFIMPORT在每个应用程序映射的情况下工作得很好,而不是在CFAdmin中全局设置。CFIMPORT对映射非常敏感(例如,你不能对relativepath使用变量,也不能使用expandpath) --但是你应该能够做你所请求的没有问题的事情。
您是否在CFAdmin |设置中选中了“启用每个应用程序的设置”以允许您使用this.mappings?您运行的是什么版本的CF?我正在使用CF8和这段代码,没有任何问题:
应用程序CFC (在函数外部,但在组件中):
this.rootPath = getDirectoryFromPath(getCurrentTemplatePath()); // this assures path of application.cfc is used to determine path, likely equivalent to expandPath("/")
structInsert(this.mappings, '/vp', this.rootPath);在CFC中(在函数外,但在组件中):
<cfimport prefix="loader" taglib="/vp/view/_loader/">然后我可以在CFC中使用它,它可以像预期的那样工作。
发布于 2009-06-24 14:50:06
我非常确定您不能对cfimport标记做任何花哨的事情。我认为你必须使用相对路径,并且你必须在每个页面上手动包含它。(而不是将其放在application.cfc文件中的某个位置或其他什么位置)
https://stackoverflow.com/questions/1038626
复制相似问题