首页 > 解决方案 > 将 sling 模型声明为 (adaptables = Resource.class) 有什么意义

问题描述

在 Sling Model 中,模型类被注解为 @Model(adaptables = Resource.class)

将参数传递为adaptables = Resource.class有什么意义。如果我不传递任何参数怎么办。所有参数 @Model 接受什么。

标签: aemslingsling-models

解决方案


adaptables属性决定了哪些源对象可以适应 Sling 模型实现。通常这是Resource和/或SlingHttpServletRequest,分别表示 Sling 资源或 Sling 请求对象。

在最常见的用例中,您可以将默认适应策略与其他 OOTB 模型注释结合使用。对于高级情况,您可以实现自己的适配器来控制如何完成。

如果您不指定adaptables类型,那么我不希望模型允许您通过该adaptTo()方法实例化它。我怀疑您是否也可以手动实例化它ModelFactory服务。

有关各种 Sling 模型注释和选项的详细信息,请查看 Sling 文档 [0],其中包含您应该需要的所有信息。ACS AEM Samples 项目 [1] 中也有很好的示例。

[0] https://sling.apache.org/documentation/bundles/models.html

[1] https://github.com/Adobe-Consulting-Services/acs-aem-samples/blob/master/bundle/src/main/java/com/adobe/acs/samples/models/SampleSlingModel.java


推荐阅读