簡體   English   中英

如何從FreeMarker模板調用對象上的java方法?

[英]How do I call java methods on an object from a FreeMarker template?

是否可以調用從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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM