我正在将一个非常旧的应用程序(当前在CF8中运行)迁移到Lucee。但是我似乎遇到了某种自定义标签的问题。

我试图确保对于旧安装和新安装,IIS中的所有虚拟目录都相同。并确保CFIDE和Lucee Admin中的映射和自定义标签路径相同。

但我收到此错误。而且无法弄清楚此cflink是如何实例化的。

coldfusion - 如何在ColdFusion应用程序中找到自定义标签实例化-LMLPHP

coldfusion - 如何在ColdFusion应用程序中找到自定义标签实例化-LMLPHP

我在utils.cfc文件的第300行上找到了错误代码的位置
coldfusion - 如何在ColdFusion应用程序中找到自定义标签实例化-LMLPHP

我已经很长时间没有使用过自定义标签了,但以为它们通常用下划线来调用,如果将其称为自定义标签,则代码应该更像<cf_link pageid="#LinkPageID#" Init="start">

如果我去运行该应用程序的当前CF服务器,则可以发现已经创建了cfclass文件
coldfusion - 如何在ColdFusion应用程序中找到自定义标签实例化-LMLPHP
从目录“tags”中名为cflink.cfm的文件中获得,即使“tags”目录似乎没有映射,也未在管理员的“自定义标签路径”下列出。

这款应用程序始于2003年,您可以想象已经变得与意大利面条代码不匹配,并且从一开始就没人问这个标签是如何实例化的。

是否有任何在遗留代码方面有经验的人有其他我应该寻求使之起作用的想法?目前只有生产环境,如果我能在Lucee上使用它,那将不仅是10年以来在这里尚不存在的开发环境,而且对我来说是继续展示Lucee的好方法很棒的CFML引擎

添加附加信息

Leigh问过init是否可能是jar引用,但是在cflink.cfm文件中,我看到了以下代码:

    <cfif Attributes.Init IS "start">
        <cfset Request.PageID = Attributes.PageID>
        <cfset Request.Page_Width = Variables.qParentInfo.Page_Width>
        <cfset Request.Page_Height = Variables.qParentInfo.Page_Height>
        <cfset Request.Page_TypeID = Variables.qParentInfo.Page_TypeID>
        <cfset Request.AddPath = "">
        <cfif IsDefined("Attributes.Anchor")>
            <cfset Request.Anchor = Attributes.Anchor>
        <cfelse>
            <cfset Request.Anchor = "">
        </cfif>
        <cfset Request.IsInternalLink = false>
        <cfexit method="EXITTAG">
    </cfif>

在tag\cflink.cfm内的代码中也有对cflink的引用
<cfif Len(Variables.qParentInfo.ParentID) GT 0>
    <!--- Add the page title to the end of the path --->
    <cfset Request.AddPath =  ReplaceNoCase(Variables.qParentInfo.Nav_Title," ","_","ALL") & "/" & Request.AddPath>
    <cflink init="working" pageid="#Variables.qParentInfo.ParentID#" popcode="#Attributes.popcode#">
<cfelse> ......</cfif>

尽管考虑到它是在2004年编写的,所以这可能是递归的,但我对此表示怀疑

添加搜索的屏幕快照

coldfusion - 如何在ColdFusion应用程序中找到自定义标签实例化-LMLPHP
coldfusion - 如何在ColdFusion应用程序中找到自定义标签实例化-LMLPHP

最佳答案

如果有人碰到这个。在CF8中,并假定使用较早的版本,您可以将cfm文件放入ColdFusion8\wwwroot\WEB-INF\cftags目录中,在这种情况下,将该文件放入ColdFusion8\wwwroot\WEB-INF\cftags\link.cfm然后充当其他任何cftag。

我能够找到最初在2004年构建此应用的人,他告诉我,他们这样做是为了避免输入如果他们将其作为自定义标签输入的下划线。

我有点理解,因为此标记在应用程序中的任何地方都使用了,实际上是数百次。用boy子找位男孩。

现在,我要做的就是找出如何以类似的方式将其移至Lucee世界。因此,它以相同的方式实例化。

感谢@Leigh的所有帮助,您总是很棒!

添加更多信息

如果WEB-INF\lucee\library\tag中有文件,则对应的Lucee目录为WEB-INF\lucee\library\tag。这些文件在加载时被读取,然后可以用作任何其他cf标签。

例如,如果您有WEB-INF\lucee\library\tag\link.cfm文件,则可以通过`cflink'对其进行调用。

看起来像一个很酷的主意,但对于某人在事实发生后的10年中找到它却有点a

10-07 20:27