【问题标题】:How to call Sling Model Method with input parameter AEM如何使用输入参数 AEM 调用 Sling 模型方法
【发布时间】:2017-02-19 05:33:39
【问题描述】:

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

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

但是我想用两个不同的参数在 sling model 中调用一个方法两次。sling models 可以吗?

任何帮助!!!

【问题讨论】:

    标签: aem sightly sling-models


    【解决方案1】:

    从 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用于传入 请求属性:

    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;
    }
    

    【讨论】:

    • 这实际上是另一种传递参数的方式在初始化期间,而不是在调用方法时。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-13
      • 1970-01-01
      • 2015-10-25
      • 2018-06-13
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多