Подтвердить что ты не робот

Как я могу вызвать java-методы для объекта из шаблона FreeMarker?

Можно ли вызвать метод, который принимает параметры из шаблона Freemarker?

У меня есть объектная модель, которую я пытаюсь сделать с помощью Freemarker на веб-странице. У одного из объектов есть способ получить подсписку его содержимого - с помощью параметра, который используется для фильтрации списка:

public List getunits(final String type);

Я знаю, что в JSP вы не можете сделать это напрямую, но вы можете написать пользовательские функции, которые позволят вам достичь желаемого результата. Как вы решаете это во Фримаркере? То же самое с написанием пользовательских функций? Или существует какой-то способ называть эту функцию?

4b9b3361

Ответ 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