如何开发定制适配器

时间:2015-04-28 09:41:49

标签: cq5 aem sightly

我正在通过实用的博客。我有简单的Use class,如下所示:

d = (lambda x = input("1 - to enter expression; 2 - to enter text; 3 - to exit. "): int(x) if x.isdigit() else: 3)

我通过以下代码在我的.html文件中成功调用它:

_([1, 2, 3, 4]).consume(function(err, item, push, next) {
  // Do fancy async thing
  setImmediate(function() {
    // Push the number onto the new stream
    push(null, item);

    // Consume the next item
    next();
  });
})).toArray(function(items) {
  console.log(items); // [1, 2, 3, 4]
});

它工作正常,但是当我尝试创建适配器类时,它会停止呈现fullName。下面是适配器代码。

public class SightlyDemo2 extends WCMUse {
    private String fullName;

    @Override
    public void activate() {

        fullName = get("firstName", String.class) + " " + get("lastName", String.class);
    }

    public String getFullName() {
        return fullName;
    }
}

我想使用自定义适配器,如:

<div data-sly-use.aemComponent="${'org.practice.sightly.SightlyDemo2' @ firstName= 'AEM', lastName = 'CQ5'}">
    ${aemComponent.fullName}
</div>

任何想法。

由于

1 个答案:

答案 0 :(得分:1)

如果您使用适配器创建一个从适配器扩展WCMUse的类,它将不会直接工作。当您在Sightly中使用扩展WCMUse的类时,Sightly不仅会实例化它,还会调用init()和activate()方法,这些方法在AdapterFactory中无法执行,因为您无法访问ScriptBindings资源。

如果你需要同时使用SightlyDemo2类和和adaptTo(),我建议你放弃WCMUse。您可以从资源中检索所需的任何属性,并从AdapterFactory将它们注入到您的pojo中,或者更好的是,为它创建Sling Model