是否可以调用从 Freemarker 模板获取参数的方法?
我有一个对象模型,我正在尝试使用 Freemarker 将其渲染到网页中。其中一个对象具有获取其内容的子列表的方法 - 采用用于过滤列表的参数:
public List getunits(final String type);
我知道在 JSP 中你不能直接这样做,但是你可以编写自定义函数来实现你想要的结果。你如何在 Freemarker 中解决这个问题?写自定义函数也一样吗?或者有什么方法可以实际调用这种函数?
是否可以调用从 Freemarker 模板获取参数的方法?
我有一个对象模型,我正在尝试使用 Freemarker 将其渲染到网页中。其中一个对象具有获取其内容的子列表的方法 - 采用用于过滤列表的参数:
public List getunits(final String type);
我知道在 JSP 中你不能直接这样做,但是你可以编写自定义函数来实现你想要的结果。你如何在 Freemarker 中解决这个问题?写自定义函数也一样吗?或者有什么方法可以实际调用这种函数?
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