2012-11-12 32 views
5

我们正在使用Coldfusion 9.如何检索enablecfoutputonly的当前值?

是否有一个简单的方法来知道enablecfoutputonly在特定请求期间是否已设置为true?

+1

其设置为true,那么你肯定知道它已被设置为true? ; o) –

+1

我也想知道这一点。这个问题在一个月前的其他地方(或者另一个问题,我不记得了),我花了一天中最好的时间试图找出如何检测这个问题,并画了一个空白。如果它在任何地方,它将在某处的getPageContext()对象中。 –

+0

我在想你可能能够获得缓冲区的价值(Ben Nadel的博客条目),然后添加一些内容而不使用cfoutput,然后检查缓冲区是否更改? (现在没有时间去实验自己了。) –

回答

5

我不能CF9测试的权利,但在CF10可被访问从getPageContext()通过检测输出对象:

<cfscript> 
    out = getPageContext().getOut(); 
    // Is the cfsetting enablecfoutputonly value currently true? 
    isSettingEnabled = out.getDisableCount() > 0; 
    WriteOutput("isSettingEnabled="& isSettingEnabled &"<br>"); 
    // Is output currently allowed? 
    isOuputtingEnabled = out.getDisableCount() == 0 || out.getOutputCount() > 0; 
    WriteOutput("isOuputtingEnabled="& isOuputtingEnabled &"<br>"); 
</cfscript> 

..或使用反射:

<cfscript> 
    out = getPageContext().getOut(); 
    internalMethod = out.getClass().getDeclaredMethod("isOutputEnabled", []); 
    internalMethod.setAccessible(true); 
    isOuputtingEnabled = internalMethod.invoke(out, []); 
    // is output currently allowed? 
    WriteOutput("isOuputtingEnabled="& isOuputtingEnabled); 
</cfscript> 
+0

我可以证实至少前一个选项适用于CF 9.0.1(我没有检查后者,因为它看起来像一堆额外的工作,没有收获)。 –

+0

注意:这不会影响Railo,因为getDisableCount()和getOutputCount()没有实现。 –

+0

任何人都知道getDisabledCount()和getOutputCount()之间的区别? –