Coldfusion:在 Application.cfc 中将标签拆分为 onRequestStart() 和 onRequestEnd()
我正在尝试查看是否有一种方法可以在 Application.cfc 中的 onRequestStart() 和 onRequestEnd() 函数之间拆分 CFSAVECONTENT 标记,以将应用程序中任何 .cfm 页面生成的 HTML 保存到变量中。
不允许将
添加到 onRequestStart() 并将 添加到 onRequestEnd(),因为标签必须关闭在函数中。
这可能吗?我试图避免将 CFSAVECONTENT 硬编码到网站的每个 .cfm 页面中。
谢谢!
I'm trying to see if there is a way to split a CFSAVECONTENT tag across the onRequestStart() and onRequestEnd() functions in Application.cfc to save the generated HTML of any .cfm page in the application to a variable.
Adding <cfsavecontent variable="html">
to onRequestStart() and adding </cfsavecontent>
to onRequestEnd() isn't allowed since the tag must be closed in the function.
Is this even possible to do? I'm trying to avoid hard coding the CFSAVECONTENT this into every .cfm page of the site.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
亚历克斯,
你可以在 OnRequest 中做类似的事情(未经测试,但应该有效)。
Alex,
You could do something like this in OnRequest (untested, but should work).
我意识到这已经有了一个可接受的答案,但在不使用 cfinclude 的情况下实现此目的的另一种方法是使用 onRequestEnd() 中的 getPageContext() 对象来获取生成的内容:
在这里很重要,因为如果您不中止请求,CF 引擎将再次输出生成的内容,并且最终会发送输出的两个副本。我曾使用此方法对网站上的内容应用站点范围的更改,但在紧急情况下查找原始内容的每个实例并不实际或不够及时。如果需要,它还可用于将生成的内容发送到翻译服务,然后再返回给最终用户。
I realize this has an accepted answer already, but another way to accomplish this without using cfinclude would be to use the getPageContext() object in onRequestEnd() to nab the generated content:
The
<cfabort />
is important here because if you don't abort the request, the CF engine will output the generated content again and it will end up sending two copies of the output along.I've used this method to apply site-wide changes to content on sites in a crunch where finding every instance of the original content wasn't practical or timely enough. It can also be used to send the generated content out to a translation service if needed before being returned to the end-user.