cfhtmlhead重置/取消设置还是取消?

时间:2010-01-13 18:25:09

标签: coldfusion

我们有一些ColdFusion应用程序使用cfhtmlhead标记添加一些脚本和随机样式表链接标记...问题是我无法更改执行此操作的文件,并且我的内容必须与包含的代码一起执行cfhtmlhead调用。再说一次,我无法解决这个问题。

我唯一可以想到几乎的作用是做一个< cfcontent reset =“true”>除了挥之不去的< script> ...< / script>之外,它会处理所有事情。和< link ... />使用< cfhtmlhead />

添加的标记

我只需要知道是否有办法重置或取消通过cfhtmlhead添加的任何内容,以输出一些无法使用脚本和链接标记的文本内容或任何乱丢输出的内容。

从我的尝试/发现,似乎不可能。有人可以确认是否是这种情况?我在某个地方错过了一些简单甚至是黑客的解决方案吗?

2 个答案:

答案 0 :(得分:2)

while (getMetaData(out).getName() is 'coldfusion.runtime.NeoBodyContent')
{
    out = out.getEnclosingWriter();
}
methods = out.getClass().getDeclaredMethod("initHeaderBuffer",arrayNew(1));
methods.setAccessible(true);
methods.invoke(out,arrayNew(1));

http://www.coldfusiondeveloper.nl/post.cfm/clearing-the-cfhtmlhead-buffer-in-railo

答案 1 :(得分:2)

感谢亨利的链接以及我同时想到的其他几个问题,我想到了其他方法来破解它并发现这个简单的解决方案适用于我原来的问题,因为我不想要/不需要使用通过cfhtmlhead调用注入的内容:

<!--- output that doesn't work with the headerText being added to it --->
<cfsavecontent variable="dontLitter">
...
</cfsavecontent>

<cfcontent type="text/html" variable="#toBinary(toBase64(dontLitter))#" />

这是有效的,因为当<cfcontent>标记与variable属性一起使用时,所有先前的输出都将被丢弃,包括使用<cfhtmlhead>设置的任何内容 - 这就是所需的内容。