Как вызвать методы Java для объекта из шаблона FreeMarker? - PullRequest
42 голосов
/ 01 сентября 2009

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

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

public List getunits(final String type);

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

Ответы [ 2 ]

36 голосов
/ 02 сентября 2009

FreeMarker позволяет вызывать методы, которые были доступны через модель из выражений .

Предполагая, что ваш объект был выставлен как myBean, вы можете вызвать метод следующим образом:

<#list myBean.getunits("myType") as unit>
  do stuff with ${unit}
</#list>

Вам не нужно использовать <list>, конечно, это просто в качестве примера, поскольку ваш метод возвращает список.

22 голосов
/ 17 января 2011

Как сказал 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...