是否可以调用从Freemarker模板获取参数的方法?
我有一个对象模型,我试图用Freemarker渲染到一个网页.其中一个对象有一个获取其内容子列表的方法 - 获取用于过滤列表的参数:
public List getunits(final String type);
我知道在JSP中你不能直接这样做,但是你可以编写自定义函数来实现你想要的结果.你如何在Freemarker中解决这个问题?编写自定义函数是一样的吗?或者有没有办法实际调用这种功能?
Chs*_*y76 37
FreeMarker允许从表达式中调用通过模型提供的方法.
假设您的对象已被公开,因为myBean您可以按如下方式调用该方法:
<#list myBean.getunits("myType") as unit>
do stuff with ${unit}
</#list>
Run Code Online (Sandbox Code Playgroud)
<list>当然,您不必使用它只是作为示例,因为您的方法返回一个列表.
mon*_*onj 22
正如ChssPly76所说,只要在模型中公开对象,就可以从Freemarker模板中执行方法调用.
但重要的是要记住,如果你的方法返回NULL(无论出于何种原因),你将会感到困惑
Expression myBean.getunits() is undefined on line ....
Run Code Online (Sandbox Code Playgroud)
为避免这种情况,最好使用myBean.getunits(...)!(注意感叹号).
在此处了解有关Freemarker如何处理空值的更多信息:http://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_missing