簡體   English   中英

使用Freemarker中的參數調用Java方法

[英]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.

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