Как я могу вызвать java-методы для объекта из шаблона FreeMarker?
Можно ли вызвать метод, который принимает параметры из шаблона Freemarker?
У меня есть объектная модель, которую я пытаюсь сделать с помощью Freemarker на веб-странице. У одного из объектов есть способ получить подсписку его содержимого - с помощью параметра, который используется для фильтрации списка:
public List getunits(final String type);
Я знаю, что в JSP вы не можете сделать это напрямую, но вы можете написать пользовательские функции, которые позволят вам достичь желаемого результата. Как вы решаете это во Фримаркере? То же самое с написанием пользовательских функций? Или существует какой-то способ называть эту функцию?
Ответы
Ответ 1
FreeMarker позволяет вызывать методы, которые были доступны через модель из выражений.
Предполагая, что ваш объект был открыт как myBean
, вы можете вызвать метод следующим образом:
<#list myBean.getunits("myType") as unit>
do stuff with ${unit}
</#list>
Вам не нужно использовать <list>
, конечно же, это просто как пример, так как ваш метод возвращает список.
Ответ 2
Как сказал ChssPly76, вы можете просто сформировать вызов метода из шаблона Freemarker, если вы выставите объект в модели.
Но важно помнить, что если ваш метод возвращает NULL (по какой-либо причине), вы получите путаную
Expression myBean.getunits() is undefined on line ....
Чтобы этого избежать, лучше использовать myBean.getunits(...)!
(обратите внимание на восклицательный знак).
Подробнее о том, как Freemarker обрабатывает нули здесь: http://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_missing