如何从FreeMarker模板调用对象的java方法?

yqhsw0fo  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(231)

是否可以调用从Freemarker模板获取参数的方法?
我有一个对象模型,我试图用Freemarker把它呈现到一个网页中,其中一个对象有一个方法来获取它的内容的子列表--带一个参数来过滤列表:
public List getunits(final String type);
我知道在JSP中你不能直接这样做,但是你可以编写自定义函数来实现你想要的结果。你如何在Freemarker中解决这个问题?编写自定义函数也是一样的吗?或者是否有某种方法可以实际调用这种函数?

rta7y2nd

rta7y2nd1#

FreeMarker允许从表达式中调用通过模型提供的方法。
假设您的对象已公开为myBean,则可以按如下所示调用该方法:

<#list myBean.getunits("myType") as unit>
  do stuff with ${unit}
</#list>

当然,您不必使用<#list>,它只是作为一个示例,因为您的方法返回一个列表。

tyu7yeag

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

相关问题