【发布时间】:2019-01-08 02:41:36
【问题描述】:
在 AEM 中,我有一个扩展 WCMUsePojo 的 Use 类 A。它有一个带有@Override 注释的activate() 方法,我在其中读取属性(比如说产品)并分配给变量。另外,我有一个 getter 方法来读取属性。现在,还有另一个类 B 扩展了类 A 并具有带有 @Override 注释的 activate() 方法。在激活方法中,我正在读取另一个属性。
现在,从 HTL 中,我引用了 B 类,并试图获取“产品属性”(假设该属性将通过继承在 B 类中可用),但我得到的是空值。但是当我将A类中的属性修饰符更改为static时,它就可以正常工作了。
请看下面的代码。
public class ClassA extends WCMUsePojo {
private String product;
@Override
public void activate() throws Exception {
product = getProperties().get(“product”, "");
}
public String getProduct() {
return product;
}
}
public class ClassB extends ClassA {
private String lotno;
@Override
public void activate() throws Exception {
lotno = getProperties().get(“lotno”, "");
}
public String getLotno() {
return lotno;
}
}
<div data-sly-use.productDetails="test.sample.ClassB"/>
${productDetails.product}
${productDetails.product} 是 null,除非我在 ClassA 中将产品属性更改为静态。有人能解释一下为什么会这样吗?
【问题讨论】: