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



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



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



public List getunits(final String type);



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

2 ответов:

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

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

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

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

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

Comments

    Ничего не найдено.