Как найти экземпляр пользовательского тега в приложении 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 лет после факта