是否可以调用从Freemarker模板获取参数的方法?我有一个对象模型,我试图用Freemarker把它呈现到一个网页中,其中一个对象有一个方法来获取它的内容的子列表--带一个参数来过滤列表:public List getunits(final String type);我知道在JSP中你不能直接这样做,但是你可以编写自定义函数来实现你想要的结果。你如何在Freemarker中解决这个问题?编写自定义函数也是一样的吗?或者是否有某种方法可以实际调用这种函数?
public List getunits(final String type);
rta7y2nd1#
FreeMarker允许从表达式中调用通过模型提供的方法。假设您的对象已公开为myBean,则可以按如下所示调用该方法:
myBean
<#list myBean.getunits("myType") as unit> do stuff with ${unit} </#list>
当然,您不必使用<#list>,它只是作为一个示例,因为您的方法返回一个列表。
<#list>
tyu7yeag2#
正如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
myBean.getunits(...)!
2条答案
按热度按时间rta7y2nd1#
FreeMarker允许从表达式中调用通过模型提供的方法。
假设您的对象已公开为
myBean
,则可以按如下所示调用该方法:当然,您不必使用
<#list>
,它只是作为一个示例,因为您的方法返回一个列表。tyu7yeag2#
正如ChssPly76所说,只要在模型中公开对象,就可以在Freemarker模板中执行方法调用。
但重要的是要记住,如果您的方法返回NULL(无论出于什么原因),您将得到一个令人困惑的
要避免这种情况,最好使用
myBean.getunits(...)!
(注意感叹号)。了解有关Freemarker如何处理空值的更多信息:http://freemarker.org/docs/dgui_template_exp.html#dgui_template_exp_missing