Как найти экземпляр пользовательского тега в приложении coldFusion

Я перевожу очень старое приложение (в настоящее время работающее в CF8) в Lucee. Но я столкнулся с проблемой, связанной с чем-то вроде пользовательского тега.

Я попытался убедиться, что все виртуальные каталоги в IIS одинаковы как для старой, так и для новой установки. И убедился, что пути сопоставления и пользовательских тегов в CFIDE и Lucee Admin одинаковы.

Но я получаю эту ошибку. И не могу понять, как это cflink в настоящее время создается.

Я обнаружил расположение кода ошибки в строке 300 в файле utils.cfc

Я долгое время не использовал пользовательские теги, но думал, что они обычно вызывались с подчеркиванием, и код должен выглядеть как <cf_link pageid="#LinkPageID#" Init="start"> если это было вызвано как пользовательский тег.

Если я перейду к текущему серверу CF, на котором запущено это приложение, я обнаружу, что файлы cfclass созданы Из файла с именем cflink.cfm в каталоге с именем "tags", даже если для каталога "tags", по-видимому, нет сопоставления и он не указан в "пути пользовательских тегов" в администраторе.

Это приложение было запущено в 2003 году и, как вы можете себе представить, переросло в несоответствие кода спагетти, и никто с самого начала не задавался вопросом, как создается этот тег.

У кого-нибудь с опытом работы с унаследованным кодом есть какие-то другие идеи, где я должен искать, чтобы заставить это работать? В настоящее время есть только производственная среда, и если я смогу заставить ее работать на Lucee, то это будет не только среда разработки, которой здесь не было 10 лет, но и отличный способ для меня продолжить показ Люси как отличный движок CFML

Добавление информации о добавлении

Ли спросил, может ли 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>

Также есть ссылки на cflink в коде внутри тегов \cflink.cfm

<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 году, я в чем-то сомневаюсь

Добавление скриншотов поисков

1 ответ

Решение

Если кто-то еще сталкивается с этим. В CF8 и в более ранних версиях вы можете поместить файл cfm в ColdFusion8\wwwroot\WEB-INF\cftags Каталог и этот файл в этом случае ColdFusion8\wwwroot\WEB-INF\cftags\link.cfm Затем действует как любой другой cftag.

Мне удалось найти человека, который изначально создавал это приложение в 2004 году, и он сказал мне, что они сделали это таким образом, чтобы не вводить подчеркивание, которое они набрали бы, если бы сделали это как пользовательский тег.

Я вроде как понял, так как этот тег используется повсюду в приложении, буквально сотни раз. Бит мальчик с сукой, чтобы найти.

Теперь все, что мне нужно сделать, это выяснить, как перенести его в мир Люси таким же образом. Таким образом, он воплощается так же.

Спасибо @Leigh за вашу помощь, вы всегда удивительны!

Добавление дополнительной информации

если есть файлы в WEB-INF\lucee\library\tag соответствующий каталог Lucee WEB-INF\lucee\library\tag, Эти файлы читаются при загрузке, а затем могут использоваться как любой другой тег cf.

Например, если у вас есть файл WEB-INF\lucee\library\tag\link.cfm это может быть вызвано `cflink'.

Похоже, крутая идея, но немного сука для кого-то, чтобы найти 10 лет после факта

Другие вопросы по тегам