调用Java方法与参数的Freemarker(Invoke Java method with par

2019-09-17 02:31发布

下面FTL标记工作正常,我和调用的getWidgets()在我的服务器端JiveActionSupport对象:

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

Answer 1:

这可能让你感到困惑这里的事情是getFoo()可以被称为foo ,但是getFoo(param)不能被称为foo(param)只能作为getFoo(param) 但是,这仅仅是JavaBeans的是如何工作的; getFoo()定义了一个JavaBean属性,而getFoo(params)没有。

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



Answer 2:

在一般情况下,它看起来好像你需要做的具体步骤如下:

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

特别是,虽然你可以使用的东西在FTL来调用服务器端方法getThings(),你需要使用action.getThing(“123”)来调用服务器端方法getThing(字符串)。



文章来源: Invoke Java method with parameters from Freemarker