0

我有一个场景,我想用输入参数调用一个吊索模型。为此,我有这样的代码

<div data-sly-use.model3="${'com.bhf.aem.sling.models.Test' @ colour='red'}">
</div>

但是我想用两个不同的参数在吊索模型中调用一个方法两次。吊索模型可以吗?

任何帮助!!!

4

2 回答 2

3

从 AEM 6.3 开始,有一个新的 HTL 功能允许执行此操作。

在 data-sly-include 和 data-sly-resource 中,您现在可以传递 requestAttributes 以便在接收 HTL 脚本中使用它们。这允许您将参数正确地传递到脚本或组件中。

<sly data-sly-use.settings="com.adobe.examples.htl.core.hashmap.Settings" 
        data-sly-include="${ 'productdetails.html' @ requestAttributes=settings.settings}"/>

Settings类的Java代码,Map用于传入requestAttributes:

public class Settings extends WCMUsePojo {

  // used to pass is requestAttributes to data-sly-resource
  public Map<String, Object> settings = new HashMap<String, Object>();

  @Override
  public void activate() throws Exception {
    settings.put("layout", "flex");
  }
}

例如,通过 Sling-Model,您可以使用指定 requestAttributes 的值。在这个例子中,布局是通过来自 Use-class 的 Map 注入的:

@Model(adaptables=SlingHttpServletRequest.class)
public class ProductSettings {

  @Inject @Optional @Default(values="empty")
  public String layout;
}
于 2019-08-30T09:12:50.553 回答
1

通过 HTL/Sightly 语言的设计,发送参数只能用于data-sly-use(使用对象初始化)和data-sly-call(模板调用)。这样做的原因是将业务逻辑与视图分离。

正如@tomasz-szymulewski 所提到的,由于https://issues.apache.org/jira/browse/SLING-5812,支持在 Sling/AEM 实现中包含资源/脚本的传递请求属性。

于 2017-02-19T06:09:48.417 回答