[英]Invoke Java method with parameters from Freemarker
以下FTL標記對我來說很好,並在我的服務器端JiveActionSupport對象中調用getWidgets():
<#list widgets! as widget>
-- do something with widget.sku
</#list>
但是,我真的需要一個依賴於widget屬性的內部列表,如下所示:
<#list widgets! as widget>
<#list manufacturers(widget.sku)! as manufacturer>
-- do something with manufacturer
</#list>
</#list>
我試圖實現服務器端代碼,如下:
public List<Manufacturer> getManufacturers(int sku);
public List<Manufacturer> getManufacturers(String sku);
但兩者都導致“表達式制造商在第123行未定義”。
如何將參數傳遞給當前JiveActionSupport對象的方法? 謝謝。
這里可能讓你感到困惑的是getFoo()
可以被稱為foo
,但getFoo(param)
不能被稱為foo(param)
,只能作為getFoo(param)
。 但這正是JavaBeans的工作方式; getFoo()
定義了一個JavaBean屬性,而getFoo(params)
則沒有。
無論如何,如果getManufacturers
是數據模型(根)對象的方法,那么(假設正確的對象包裝)您應該能夠將其稱為getManufacturers(param)
。 您無需通過action.
啟動它action.
原則上。
通常,看起來您需要執行以下操作:
<#list action.getManufacturers("123")! as manufacturer>
-- do something with manufacturer
</#list>
特別是,雖然您可以使用FTL中的東西來調用服務器端方法getThings() ,但您需要使用action.getThing(“123”)來調用服務器端方法getThing(String) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.