gpt4 book ai didi

annotations - AEM Osgi Sling 模型 @PostConstruct 从未调用过

转载 作者:行者123 更新时间:2023-12-02 07:22:30 25 4
gpt4 key购买 nike

我的 Sling 模型中的 javax.annotation.PostConstruct 注释有问题。

使用我的模型的 html 文件:

<div data-sly-use="com.company.platform.component.general.textblockvalidator.TextBlockValidatorModel" data-sly-unwrap />

型号:

import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.models.annotations.Model;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.PostConstruct;
import javax.inject.Inject;

@Model(adaptables = org.apache.sling.api.resource.Resource.class)
public class TextBlockValidatorModel {

@PostConstruct
private void init() {
System.out.println();
}

public String getValidate(){
return "This works";
}
}

我可以从我的 sightly 文件中调用 getter,但我似乎从未输入我的 @PostConstruct init() 方法。

IntelliJ 确实给了我关于注释的警告,但我不确定我做错了什么:

enter image description here

吊索模型包:

<Sling-Model-Packages>
...
com.asadventure.platform.component
...
</Sling-Model-Packages>

enter image description here

有什么想法吗?提前致谢!

最佳答案

首先,通过在此网页中查找您的类(class),检查您的 Sling 模型是否已正确注册: http://localhost:4502/system/console/status-adapters

如果此处未列出,您很可能没有指定 <Sling-Model-Packages> maven-bundle-plugin 的属性(property).

我也会尝试更改 init 的访问修饰符protected 的方法或 public .

更新:

我为 AEM 6.1 创建了一个示例项目,演示了 @PostConstruct 注释的使用。

吊索模型类:

@Model(adaptables = Resource.class)
public class SampleModel {

private boolean postContructCalled = false;

@PostConstruct
public void init() {
this.postContructCalled = true;
}

public boolean isPostContructCalled() {
return this.postContructCalled;
}
}

还有一个简单的 HTL 组件:

<sly data-sly-use.model="com.github.mickleroy.models.SampleModel">
<p>@PostConstruct was called: ${model.postContructCalled}</p>
</sly>

请注意data-sly-use的使用指令 - 您需要提供模型名称。

此外,正如我在评论中提到的,您不应该添加 javax.annotation-api作为依赖项,因为它是 JDK 的一部分。

此处提供完整源代码:https://github.com/mickleroy/sling-models-sample

关于annotations - AEM Osgi Sling 模型 @PostConstruct 从未调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41895352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com