Дамп всех значений в .vars в Freemarker

Я пытаюсь сбросить все переменные, доступные для моих шаблонов freemarker. Я пытаюсь использовать что-то вроде:

<#list .vars?keys as prop>
${prop} = ${.vars.get(prop)}

</#list>

Я прочитал в документации, что .vars не поддерживает функциональность ключей, однако я использую вышеизложенное, чтобы показать, что я пытаюсь сделать.

Это мой первый день с Freemarker, поэтому любой совет будет полезен.


person Kyle Hayes    schedule 20.01.2011    source источник
comment
Взгляните на этот ответ   -  person Lu55    schedule 18.01.2016


Ответы (1)


Я не думаю, что вы можете перечислить все переменные, доступные для шаблона. Я знаю, что вы не можете перечислить их в Java.

FreeMarker очень хорошо задокументирован. Ознакомьтесь с разделом об специальных переменных FreeMarker.

Если вас это утешит, вы можете получить доступ к локальным переменным,

<#assign someVar = 12>
<#list .main?keys as var>
    ${var}
</#list>

который выводит

someVar
person Andy    schedule 20.01.2011
comment
Спасибо, Энди. Я нашел Environment.getKnownVariableNames(), однако я не знаю, будет ли делать то, что я хочу, и я не могу понять, как получить среду :-P - person Kyle Hayes; 21.01.2011
comment
Я тоже посмотрел на это, но обнаружил, что оно не работает так, как я ожидал. Одна из теорий, которые у меня были, заключалась в том, что, возможно, Freemarker не имеет списка переменных в data_model, потому что во время выполнения он просто пытается получить их из метода get. Однако я недостаточно хорошо знаю код freemarker, чтобы это проверить. - person Andy; 21.01.2011
comment
Спасибо, Энди, мне было интересно, как вывести значения таких ключей, имена которых имеют . (период) в нем. Freemarker пытался оценить правую часть . как свойство некоторого объекта. Я смог добиться этого, используя специальную переменную .data_model. - person jatanp; 06.01.2014