在Sling模型中,使用@Model(adaptables = Resource.class)
注解的用途是指定该模型可以适配Sling Resource
对象。它告诉Sling框架将该模型用于适配Resource
对象。
Resource
是Sling中的一个核心概念,表示了JCR树中的一个节点或者其他类型的资源。通过将@Model
注解与adaptables = Resource.class
一起使用,可以使得Sling框架能够自动将Resource
对象适配到相应的模型实例中。
下面是一个示例代码,演示了如何使用@Model(adaptables = Resource.class)
注解来创建一个可适配Resource
对象的Sling模型:
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.Model;
@Model(adaptables = Resource.class)
public class MyModel {
private String title;
private String description;
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
@PostConstruct
protected void init() {
// 初始化模型属性
Resource resource = getResource();
title = resource.getValueMap().get("title", String.class);
description = resource.getValueMap().get("description", String.class);
}
}
在上面的示例中,MyModel
类使用@Model(adaptables = Resource.class)
注解,表示该模型可以适配Resource
对象。在init()
方法中,我们可以通过getResource()
方法获取到适配的Resource
对象,并且使用该对象的属性来初始化模型的title
和description
属性。
这样,当Sling框架需要将一个Resource
对象适配到MyModel
模型时,会自动调用init()
方法来初始化模型的属性。