如何从FreeMarker模板的对象调用java方法?
是否可以调用一个从Freemarker模板获取参数的方法?
我有一个对象模型,我试图用Freemarker渲染成一个网页。 其中一个对象有一个获取其内容子列表的方法 – 用一个参数来过滤列表:
public List getunits(final String type);
我知道在JSP中你不能直接这样做,但是你可以编写自定义的函数来实现你想要的结果。 你如何在Freemarker中解决这个问题? 编写自定义函数是否一样? 还是有一些实际调用这种function的方式?
FreeMarker允许从expression式中调用通过模型提供的方法。
假设你的对象已经被暴露为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