以下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对象的方法?感谢。
答案 0 :(得分:8)
可能让您感到困惑的是,getFoo()
可以被称为foo
,但getFoo(param)
不能被称为foo(param)
,只能被称为getFoo(param)
}}。但这正是JavaBeans的工作方式; getFoo()
定义了JavaBean属性,而getFoo(params)
则没有。
无论如何,如果getManufacturers
是数据模型(根)对象的方法,那么(假设正确的对象包装)您应该能够将其称为getManufacturers(param)
。您原则上不需要使用action.
启动它。
答案 1 :(得分:3)
通常,看起来您需要执行以下操作:
<#list action.getManufacturers("123")! as manufacturer>
-- do something with manufacturer
</#list>
特别是,虽然您可以在FTL中使用 things 来调用服务器端方法 getThings(),但您需要使用 action.getThing(“ 123“)调用服务器端方法 getThing(String)。