如何在coldFusion应用程序中找到自定义标记实例

时间:2015-12-08 20:19:26

标签: coldfusion railo lucee

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

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

但是我收到了这个错误。并且无法弄清楚这个cflink是如何被实例化的。

enter image description here

enter image description here

我在utils.cfc文件的第300行找到了错误代码的位置 enter image description here

我很长时间没有使用自定义标记,但认为它们通常使用下划线调用,如果将此代码称为自定义标记,则代码应更像<cf_link pageid="#LinkPageID#" Init="start">

如果我去运行此应用程序的当前CF服务器,我可以发现已创建cfclass文件 enter image description here 在名为“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>

在tags \ 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年写的,我有点怀疑它

添加搜索屏幕截图

enter image description here enter image description here

1 个答案:

答案 0 :(得分:3)

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

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

我有点得到它,因为这个标签在应用程序的任何地方使用,几百次。有点婊子的小男孩找。

现在我所要做的就是弄清楚如何以类似的方式将它移动到Lucee世界。所以它以同样的方式实现。

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

添加更多信息

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

例如,如果您有文件WEB-INF\lucee\library\tag\link.cfm,则可以通过`cflink&#39;来调用它。

看起来像一个的想法,但有些人在事后10年找到了一个婊子