Как вызвать методы java для объекта из шаблона FreeMarker?
Можно ли вызвать метод, который берет параметры из шаблона Freemarker?
У меня есть объектная модель, которую я пытаюсь отобразить с помощью Freemarker на веб-странице. Один из объектов имеет метод для получения подсписка его содержимого-беря параметр, который используется для фильтрации списка:
public List getunits(final String type);
Я знаю, что в JSP вы не можете сделать это напрямую, но вы можете написать пользовательские функции, которые позволят вам достичь желаемого результата. Как вы решаете эту проблему в Freemarker? То же самое и с написанием пользовательских функций? Или есть какой-то способ на самом деле вызвать такого рода функцию?
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