如何使用输入参数AEM调用Sling Model Method

时间:2017-02-19 05:33:39

标签: cq5 aem sightly sling-models

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

*{
    display:block; 
}

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

任何帮助!!!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

从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中注入的:

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

  @Inject @Optional @Default(values="empty")
  public String layout;
}