2012-11-12 61 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()之間的區別? –