application.cfc中的自定义标签是否会忽略this.customTagPaths?

时间:2014-11-28 16:35:58

标签: coldfusion application.cfc

在我的根application.cfc中,我定义了this.customTagPaths。验证它适用于所有页面,包括子文件夹中的页面。在一个子文件夹中,我有一个application.cfc,它扩展了这个根application.cfc。此文件夹中的页面仍然使用正确的自定义标记,因此我们知道这是正常的。

但是,当尝试在[subfolder]/application.cfc文件中使用自定义标记时,我相信它会从不同的自定义标记路径中提取。我在自定义标记中添加了一些调试信息,并在从普通页面调用自定义标记时输出,但在从application.cfc调用时不输出。我无权访问服务器以将调试信息放在其他自定义标记路径中以确保。

application.cfc中的代码是否忽略this.customTagPaths,如果是,我如何使用我需要的特定代码?此自定义标记在调用者范围内设置变量,因此无法使用简单的cfInclude调用它。

修改

我将尝试在这里的评论中解决一些问题。

相关的自定义标记已简化为此代码:

    <cfset Caller.groupList = ""> 
    <cfquery name="getGroups">
        SELECT id, name
        FROM groups
        WHERE id = 1
    </cfquery>

    <cfoutput query="getGroups">
        <cfset Caller.groupList = #ListAppend(Caller.groupList, name)#> 
    </cfoutput>
    <cfoutput>Caller.groupList: #Caller.groupList#<br></cfoutput>

Application.cfc正在使用此代码:

    <cfcomponent extends="RootApplication">
            ............
            <cf_groupList>
            <cfoutput>request.groupList: #request.groupList#<br><br></cfoutput>
    </cfcomponent>

当直接从cfm调用cf_groupList时,它会将“Call.groupList:xxxx”写入页面并显示dev数据库中的正确值。但是,当Application.cfc运行时,自定义标记“Call.groupList:xxxx”永远不会出现,但“request.groupList:xxxx”会出现,而在后一种情况下,它会显示我们期望从实时数据库中获得的列表。 live和dev站点当前都在同一台服务器上,我们正在更改它,但是现在我没有调试信息。

我从Application.cfc调用自定义标记的原因是因为此标记用于许多其他地方。简单地将代码复制并粘贴到Application.cfc中可以解决问题,但是我们遇到了一个重复代码问题,我们需要记住将来在两个地方进行更新。在application.cfc中使用自定义标记而不是复制代码似乎是正确的方法。

马克,你是对的。放置在父Application.cfc中时,自定义标记可以正常工作。在孩子身上没有。

0 个答案:

没有答案