我正在通过实用的博客。我有简单的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>
任何想法。
由于
答案 0 :(得分:1)
如果您使用适配器创建一个从适配器扩展WCMUse的类,它将不会直接工作。当您在Sightly中使用扩展WCMUse的类时,Sightly不仅会实例化它,还会调用init()和activate()方法,这些方法在AdapterFactory中无法执行,因为您无法访问ScriptBindings资源。
如果你需要同时使用SightlyDemo2类和和adaptTo(),我建议你放弃WCMUse。您可以从资源中检索所需的任何属性,并从AdapterFactory将它们注入到您的pojo中,或者更好的是,为它创建Sling Model。