使用Freemarker中的参数调用Java方法

jar*_*mod 5 java freemarker

以下FTL标记对我来说很好,并在我的服务器端JiveActionSupport对象中调用getWidgets():

<#list widgets! as widget>
  -- do something with widget.sku
</#list>
Run Code Online (Sandbox Code Playgroud)

但是,我真的需要一个依赖于widget属性的内部列表,如下所示:

<#list widgets! as widget>
  <#list manufacturers(widget.sku)! as manufacturer>
  -- do something with manufacturer
  </#list>
</#list>
Run Code Online (Sandbox Code Playgroud)

我试图实现服务器端代码,如下:

public List<Manufacturer> getManufacturers(int sku);
public List<Manufacturer> getManufacturers(String sku);
Run Code Online (Sandbox Code Playgroud)

但两者都导致"表达式制造商在第123行未定义".

如何将参数传递给当前JiveActionSupport对象的方法?谢谢.

dde*_*any 9

这里可能让你迷茫的事情是getFoo()可以被称为foo,但getFoo(param)不能被称为foo(param),只能作为getFoo(param).但这正是JavaBeans的工作方式; getFoo()定义JavaBean属性,而getFoo(params)不是.

无论如何,如果getManufacturers是数据模型(根)对象的方法,那么(假设正确的对象包装)你应该能够将其称为getManufacturers(param).原则上你不需要启动它action..