Как сбросить буфер заголовка в Lucee?
Я пытаюсь написать модульный тест для моего приложения ColdBox, работающего на Lucee 4.5, используя testbox для функции, которая включает cfhtmlhead()
вызов.
К сожалению, строка, которая обычно добавляется к <head>
раздел вывода HTML, использующий эту функцию, вместо этого добавляется к выводу модульного теста, что приводит к сбою теста.
Выход из cfhtmlhead()
очевидно записывается в специальный буфер. Согласно сообщению в блоге, этот буфер можно очистить. Показанный здесь пример функции выглядит следующим образом:
function clearHeaderBuffer() {
local.out = getPageContext().getOut();
while (getMetaData(local.out).getName() is "coldfusion.runtime.NeoBodyContent") {
local.out = local.out.getEnclosingWriter();
}
local.method = local.out.getClass().getDeclaredMethod("initHeaderBuffer", arrayNew(1));
local.method.setAccessible(true);
local.method.invoke(local.out, arrayNew(1));
}
Хотя сообщение в блоге написано для Adobe ColdFusion, и оно явно не работает в Lucee. Путем сброса local.out
Я видел, что у объекта есть метод resetHTMLHead()
, Но вызов этого метода тоже не работает (даже когда getHTMLHead()
Метод выводит строку из cfhtmlhead()
вызов).
Итак, как сбросить буфер заголовка в Lucee?
1 ответ
Я нашел ответ, проверив источники Люси. Там буфер доступен черезgetRootOut().getHTMLHead()
,
Поэтому код для очистки буфера заголовка сводится к следующему:
function clearHeaderBuffer() {
getPageContext().getRootOut().resetHTMLHead();
}