5

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

<#list widgets! as widget>
  -- do something with widget.sku
</#list>

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

<#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 对象的方法?谢谢。

4

2 回答 2

9

在这里可能让您感到困惑的是,getFoo()可以称为 as foo,但getFoo(param)不能称为 as foo(param),只能称为 as getFoo(param)。但这正是 JavaBeans 的工作方式;getFoo()定义了一个 JavaBean 属性,而getFoo(params)没有。

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

于 2012-05-08T15:33:17.820 回答
4

通常,您似乎需要按如下方式执行此操作:

<#list action.getManufacturers("123")! as manufacturer>
  -- do something with manufacturer
</#list>

特别是,虽然您可以使用FTL 中的事物来调用服务器端方法getThings(),但您需要使用action.getThing("123")来调用服务器端方法getThing(String)

于 2012-05-08T15:01:53.757 回答