我正在开发一个大型的传统ColdFusion网站,该网站广泛使用框架进行布局。该网站的很大一部分专门用于流程控制工作流程 -
...等
每种类型的作业的每个部分或阶段当前都有自己的.cfm页面及相关输入,每个页面都有自己的副本(应该是什么,但不是)进行/回归的公共代码阶段之间。每个页面都显示在主框架中,其他框架有一个阶段列表,工作摘要等。
我的任务是清理这个不圣洁的混乱,并制作一个通用的通用流程控制处理程序来处理所有工作类型。我在数据库中有每个阶段文件的名称,所以我可以做一个查询,给出作业的类型和ID,数据库返回我需要显示的URL。
但是加载该页面的最佳方法是什么?我玩<cfdiv bind="[page]">
,它加载了页面,但似乎没有加载任何javascript,<cfinclude template="[page]">
,这是...有问题的,因为现有的代码使用URL参数广泛而且我无法通过<cfinclude>
直接提供这些信息。
我是否应该使用cfc函数从请求中删除URL参数,将它们插入到URL范围中,然后<cfinclude>
页面?我对所有想法持开放态度,但我试图避免对舞台页面进行大量改写 - 其中有很多,其中一些并不是很好写...
编辑:工作示例?
我刚刚探讨了将它放在自定义标记中,所以在我的处理程序页面中我有:
<cf_processPage typeid="#typeid#" objid="#objid#">
并在processPage.cfm中:
<cfinvoke component="cfc.pcs" method="getCurrProcess" returnvariable="strUrl">
<cfinvokeargument name="CategoryID" value="#catid#">
<cfinvokeargument name="EntityID" value="#objid#">
</cfinvoke>
<cfif strUrl.indexOf('?') gt 0>
<cfset strPage = ListGetAt(strUrl,1,'?')>
<cfset strArgs = ListGetAt(strUrl,2,'?')>
<cfloop list="#strArgs#" delimiters="&" index="arg">
<cfset URL[#ListGetAt(arg,1,'=')#] = #ListGetAt(arg,2,'=')#>
</cfloop>
<cfelse>
<cfset strPage = strUrl>
</cfif>
<cfinclude template="#strPage#">`
它看起来效果很好,但这就是......有效吗?优雅?有没有更好的方法(?)?